我找到了使用
的解决方案
stringr::str_split(my_string,"(?<=[^ ])(,)(?=[^ ])")
,
您仍然可以使用基本的R strsplit
函数,但是带有perl=TRUE
参数来启用PCRE rege引擎并使用 lookarounds 而不是使用 non-捕获模式中的组以检查,
周围的非空白字符:
my_string <- "FIRST item,SECOND,item,third ITEM,FOURTH item"
strsplit(my_string,"(?<=\\S),(?=\\S)",perl=TRUE)[[1]]
## =>[1] "FIRST item" "SECOND,item" "third ITEM" "FOURTH item"
请参见online R demo和regex demo。详细信息:
-
(?<=\S)
-向后的正向查找,要求在当前位置之前紧跟一个非空白字符
-
,
-逗号
-
(?=\S)
-正向超前,需要在当前位置之后立即输入非空白字符。
,
不需要复杂的正则表达式。这是一个可以使用的简单正则表达式:,(?=[a-zA-Z])
。
说明:
-
,
:匹配逗号
-
(?=[a-zA-Z])
:但只有字母后跟字母a到z 不区分大小写。
my_string <- "FIRST item,",(?=[a-zA-Z])",perl = TRUE)
#> [[1]]
#> [1] "FIRST item" "SECOND,item" "third ITEM" "FOURTH item"
stringr::str_split(my_string,(?=[a-zA-Z])")
#> [[1]]
#> [1] "FIRST item" "SECOND,item" "third ITEM" "FOURTH item"
本文链接:https://www.f2er.com/2894456.html