带有特殊字符的{g}

时间:2016-03-01 16:15:22

标签: regex r

我试图用gsub替换我认为的标准短划线。我测试的代码是:

gsub("-", "ABC", "reported – estimate")

但是,这没有任何作用。我将短信复制并粘贴到http://unicodelookup.com/#–/1中,似乎是一个冲刺。那个网站提供了十字架,十字架等代码用于短划线,我一直试图取代短划线,但没有运气。建议?

(作为奖励,如果你能告诉我是否有识别特殊字符的功能会有帮助)。

我不确定SO的代码格式是否会改变短划线格式,所以这里是我使用( - )的短划线。

2 个答案:

答案 0 :(得分:5)

您可以通过在正则表达式模式中指定它来替换en-dash。

gsub("–", "ABC", "reported – estimate")

您可以将所有连字符,en-em和em-dashes与

匹配
gsub("[-–—]", "ABC", "reported – estimate — more - text")

请参阅IDEONE demo

要检查字符串中是否存在非ascii字符,请使用

> s = "plus ça change, plus c'est la même chose"
> gsub("[[:ascii:]]+", "", s, perl=T)
[1] "çê"

请参阅this IDEONE demo

您将获得一个空结果(如果一个字符串只包含" word"字符和空格),或者 - 如此处 - 一些"特殊"字符。

答案 1 :(得分:3)

对于特殊字符替换,您可以进行否定补充。

gsub('[^\\w]*', 'ABC', 'reported - estimate', perl = True)将用ABC替换所有特殊字符。 [^ \ w]是一种模式,表示任何不是正常角色的东西。