我已经定义了
vec <- "5f 110y, Fast"
Run Code Online (Sandbox Code Playgroud)
和
gsub("[\\s0-9a-z]+,", "", vec)
Run Code Online (Sandbox Code Playgroud)
给" 5f Fast"
我原以为它会给出" Fast",因为逗号之前的所有内容都应该与正则表达式相匹配.
任何人都可以向我解释为什么不是这种情况?
Wik*_*żew 18
你应该记住的是,在TRE正则表达式模式,您不能使用正则表达式逃逸像\s,\d,\w.
所以,你的情况正则表达式,"[\\s0-9a-z]+,"火柴1以上\,s,数字和小写ASCII字母,然后单,.
您可以使用POSIX字符类,例如[:space:](任何空格)或[:blank:](水平空格):
> gsub("[[:space:]0-9a-z]+,", "", vec)
[1] " Fast"
Run Code Online (Sandbox Code Playgroud)
或者,使用PCRE正则表达式\s和perl=TRUE参数:
> gsub("[\\s0-9a-z]+,", "", vec, perl=TRUE)
[1] " Fast"
Run Code Online (Sandbox Code Playgroud)
要\s匹配所有Unicode空格,请(*UCP)在模式开始处添加PCRE动词:gsub("(*UCP)[\\s0-9a-z]+,", "", vec, perl=TRUE).
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |