如何修改正则模式提取含ba的完整句子适配R语言find.all.matches函数
解决方案
适配find.all.matches的正则模式
直接使用以下正则模式即可提取所有包含ba的完整句子(支持大小写不敏感匹配,若需严格匹配小写ba可去掉(?i)前缀):
pattern <- "(?i)(?<=^|(?<=[.!?]\\s))[^.!?]*ba[^.!?]*[.!?]"
正则逻辑说明
(?i):开启大小写不敏感匹配,确保能捕获包含BA/Ba/bA的句子(?<=^|(?<=[.!?]\\s)):定位句子起始位置——要么是摘要文本的开头,要么是上一句结束标点(./!/?)加空格后的位置[^.!?]*:匹配任意非句子结束标点的字符,避免跨句子匹配ba:指定要匹配的核心关键词[.!?]:匹配句子的结束标点,确保提取内容为完整句子
函数调用示例
假设你的数据框为journal_df,摘要列名为abstract,直接代入find.all.matches函数即可:
result <- find.all.matches(journal_df, col = "abstract", pattern = pattern)
特殊场景优化(可选)
如果摘要中存在带缩写的句子(如U.S.A.),基础正则可能误分割,可调整为更精准的模式(仅匹配大写字母开头的规范句子):
pattern_optimized <- "(?i)(?<=^|(?<=[.!?]\\s)[A-Z])[^.!?]*ba[^.!?]*[.!?]"
内容的提问来源于stack exchange,提问作者Melissa Duda
相关产品推荐
相关产品推荐

