正则表达式 – 等效正则表达式,以删除所有标点符号

前端之家收集整理的这篇文章主要介绍了正则表达式 – 等效正则表达式,以删除所有标点符号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在R中,为了从字符串中删除标点符号,我可以这样做:

x <- 'a#,g:?s!*$t/{u}\d\&y'
gsub('[[:punct:]]','',x)
[1] "agstudy"

这很聪明,但我没有严格控制删除标点符号(想象一下我想在我的角色中保留一些符号).如何在不忘记任何符号的情况下以更明确的方式重写此gsub,如下所示:

gsub('[#,:?!*$/{}\\&]',x,perl=FALSE)

编辑

我遇到的困难是如何编写正则表达式(我更喜欢在R中)从x中删除所有标点字符,并仅保留#例如:

"a#gstudy"

解决方法

使用否定先行断言:

x <- 'a#,g:?s!*$t/{u}\\d\\&y'

gsub('(?!#)[[:punct:]]',perl=TRUE)
# [1] "a#gstudy"

这本质上是对每个字符进行两次测试,从前面的字符间空间询问一次下一个字符是否是“#”以外的字符,然后从字符本身询问它是否是标点符号.如果两个测试都为真,则会注册匹配并删除该字符.

猜你在找的正则表达式相关文章