我已经定义了
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 次 |
最近记录: |