在R中匹配utf-8模式的正则表达式

在R中匹配utf-8模式的正则表达式,r,regex,R,Regex,就我的一生而言,我无法让它发挥作用: 我正在尝试将这样的十六进制序列(或任何以\x开头并以两个数字结尾的序列)“\xed\xa0\xbd\xed\xb8\x89”和这个正则表达式匹配,但它不起作用 我在想我必须先用一个空格,后跟一个\和一个x,然后让数字范围0-9重复两次,或者不重复 欢迎任何帮助 我看不出空白的原因,那么字母a-f呢?还有,你为什么坚持这些应该只发生在生产线的开头?首先尝试\\x[0-9a-f]{2},您可能会遇到一些问题,因为当您指定一个类似\x30的字符串时,它实际上是十六

就我的一生而言,我无法让它发挥作用:

我正在尝试将这样的十六进制序列(或任何以\x开头并以两个数字结尾的序列)
“\xed\xa0\xbd\xed\xb8\x89”
和这个正则表达式匹配,但它不起作用

我在想我必须先用一个空格,后跟一个
\
和一个
x
,然后让数字范围0-9重复两次,或者不重复


欢迎任何帮助

我看不出空白的原因,那么字母a-f呢?还有,你为什么坚持这些应该只发生在生产线的开头?首先尝试
\\x[0-9a-f]{2}

,您可能会遇到一些问题,因为当您指定一个类似\x30的字符串时,它实际上是十六进制表示形式。例如,对于零ascii字符的表示:

> c = "\x30"
> c
[1] "0"
因此,这取决于字符串的表示方式和分配/读取方式

对于正则表达式-这里有一些接近您需要的东西,在这里用正斜杠而不是反斜杠演示

str_extract("/xed/xa0/xbd/xed/xb8/x89", "(\\/x[0-9a-f]{2})+")

[1] "/xed/xa0/xbd/xed/xb8/x89"

这是上面G5W中的正则表达式-但是通过围绕()+

来匹配序列,感谢所有试图帮助我的人!!这似乎主要是一个编码问题

这就是最终成功的原因

gsub("[^A-Za-z0-9 ]", "", "I mean totally \xed\xa0\xbd\xed\xb8\x8a")
产生

“我的意思是完全”因为它删除了除了字母和数字以外的所有东西


我在上找到了它,只需添加一个空格,这样它们就不会被删除

您可以使用
[^-~]+
正则表达式删除任何1+个非ASCII符号:

> gsub("[^ -~]+", "", "I mean totally \xed\xa0\xbd\xed\xb8\x8a")
[1] "I mean totally "
看一看

该模式意味着:

  • [^
    -否定字符类的开始
  • -~
    -ASCII表格中空格(十进制代码32)和波浪号(十进制代码126)之间的字符范围
  • ]
    -字符类结束
  • +
    -一个量词,将子模式与其左侧匹配一次或多次

不太清楚您有什么输入,以及您的预期结果应该是什么样子。检查。如果不是你想要的,请用细节更新问题。对不起,我刚开始使用regex,我想这已经足够了……那么,你最终需要得到什么?下面的答案是否回答了您的问题,或者我的方法对您有效?不幸的是,没有。但是这个成功了:
gsub(“[^A-Za-z0-9]”,“,“我是说完全\xed\xa0\xbd\xed\xb8\x8a”)
并且它产生了我的意思是完全的。谢谢你帮了大忙!您只是问了一个不清楚的问题,没有说明您是发布了字符串文字还是文字字符串作为示例。自己回答一个不清楚的问题不是一个好主意,因为只有你才能回答。您可以将此解决方案添加到问题本身,以便问题变得清晰。看看我的答案,找到另一个解决方案。啊,我明白了!谢谢你的反馈!