在R中匹配utf-8模式的正则表达式
就我的一生而言,我无法让它发挥作用: 我正在尝试将这样的十六进制序列(或任何以\x开头并以两个数字结尾的序列)在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的字符串时,它实际上是十六
“\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)之间的字符范围-~
-字符类结束]
-一个量词,将子模式与其左侧匹配一次或多次+
gsub(“[^A-Za-z0-9]”,“,“我是说完全\xed\xa0\xbd\xed\xb8\x8a”)
并且它产生了我的意思是完全的。谢谢你帮了大忙!您只是问了一个不清楚的问题,没有说明您是发布了字符串文字还是文字字符串作为示例。自己回答一个不清楚的问题不是一个好主意,因为只有你才能回答。您可以将此解决方案添加到问题本身,以便问题变得清晰。看看我的答案,找到另一个解决方案。啊,我明白了!谢谢你的反馈!