R中的strsplit函数是什么,匹配并删除给定的正则表达式以将字符串的其余部分拆分为向量.
>strsplit("abc123def", "[0-9]+")
[[1]]
[1] "abc" "" "" "def"
Run Code Online (Sandbox Code Playgroud)
但是我应该如何使用正则表达式以相同的方式拆分字符串,还要保留匹配?我需要以下内容.
>FUNCTION("abc123def", "[0-9]+")
[[1]]
[1] "abc" "123" "def"
Run Code Online (Sandbox Code Playgroud)
使用strapply("abc123def","[0-9] + | [az] +")在这里工作,但如果正则表达式无法捕获除匹配之外的其余字符串怎么办?
Ari*_*man 24
从根本上说,在我看来,你想要的不是分裂,[0-9]+
而是分裂[0-9]+
其他事物之间的过渡.在您的字符串中,该转换不是预先存在的.要插入它,您可以预处理gsub
和反向引用:
test <- "abc123def"
strsplit( gsub("([0-9]+)","~\\1~",test), "~" )
[[1]]
[1] "abc" "123" "def"
Run Code Online (Sandbox Code Playgroud)
您可以使用外观断言.
> test <- "abc123def"
> strsplit(test, "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)", perl=T)
[[1]]
[1] "abc" "123" "def"
Run Code Online (Sandbox Code Playgroud)