Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 具有特殊字符的R-gsub_Regex_R - Fatal编程技术网

Regex 具有特殊字符的R-gsub

Regex 具有特殊字符的R-gsub,regex,r,Regex,R,我试图用gsub替换我认为是标准的短跑。我测试的代码是: gsub(“-”、“ABC”、“报告-估算”) 不过,这没什么作用。我复制并粘贴了破折号到,它似乎是一个en破折号。该网站提供了十六进制,十二进制等代码的一个en破折号,我一直试图取代en破折号,但没有运气。建议 (作为奖励,如果你能告诉我是否有识别特殊字符的功能会有帮助的话) 我不确定SO的代码格式是否会改变破折号格式,因此我正在使用破折号(–)。您可以通过在正则表达式模式中指定它来替换en破折号 gsub("–", "ABC",

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


gsub(“-”、“ABC”、“报告-估算”)

不过,这没什么作用。我复制并粘贴了破折号到,它似乎是一个en破折号。该网站提供了十六进制,十二进制等代码的一个en破折号,我一直试图取代en破折号,但没有运气。建议

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


我不确定SO的代码格式是否会改变破折号格式,因此我正在使用破折号(–)。

您可以通过在正则表达式模式中指定它来替换en破折号

gsub("–", "ABC", "reported – estimate")
可以将所有连字符、en-和em-破折号与匹配

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

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

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


您将得到一个空结果(如果字符串仅由“word”字符和空格组成),或者-如这里所示-一些“特殊”字符

对于特殊字符替换,可以使用负数补码


gsub(“[^\\w]*”、“ABC”、“reported-estimate”、perl=True)
将用ABC替换所有特殊字符。[^\w]是一种模式,表示任何非正常字符。

这很好。也许我对“特殊字符”没有使用正确的术语。我的意思是,这些字符不是标准的UTF-8。例如,当使用readr::write_csv()导出时,我发现这些字符看起来很奇怪。您提供的gsub是否可以更改以将“ô”标识为“特殊字符”。您可以将其与正则表达式一起使用,以匹配所有ascii:
gsub(“[:ascii:]+”,“”,s)
。这将从保留结果中所有Unicode字符的字符串中删除所有ascii。您只需将
perl=T
与上述正则表达式模式一起使用,因为这是一个PCRE构造。