[英]R regex remove apostroph except the ones preceded and followed by letter
我正在清理文本,我想删除任何撇号,除了之前和之后的字母,如:我是,我会,他......等等。
我有以下初步解决方案,处理很多案例,但我想要一个更好的案例:
rmAps <- function(x) gsub("^\'+| \'+|\'+ |[^[:alpha:]]\'+(a-z)*|\\b\'*$", " ", x)
rmAps("'i'm '' ' 'we end' '")
[1] " i'm we end "
我也尝试过:
(?<![a-z])'(?![a-z])
但我想我仍然想念......
gsub("'(?!\\w)|(?<!\\w)'", "", x, perl = TRUE)
#[1] "i'm we end "
删除角色后面没有单词字符的情况: '(?!\\\\w)
。
删除角色前面没有单词字符的情况: (?<!\\\\w)'
。
如果出现上述任何一种情况,你想要删除它,所以'(?!\\\\w)|(?<!\\\\w)'
应该可以解决问题。 请注意, \\\\w
包含下划线,并根据需要进行调整。
另一种选择是
gsub("\\w'\\w(*SKIP)(*FAIL)|'", "", x, perl = TRUE)
在这种情况下,您匹配'
被单词字符包围的任何实例: \\\\w'\\\\w
,然后强制该匹配失败(*SKIP)(*FAIL)
。 但是,也要寻找'
使用|'
。 结果是只会出现'
未包装在单词字符中”并将其替换掉的情况。
您可以使用以下正则表达式:
(?<=\w)'(?=\w)
(?<=)
是一个积极的看法。 内部的所有内容需要在下一个选择器之前匹配 (?=)
是一个积极的前瞻。 内部的所有内容都需要在前一个选择器之后匹配 \\w
任何字母数字字符和下划线 如果要限制结果,也可以将\\w
切换到例如[a-zA-Z]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.