R 四分五裂
我想将字符串拆分为单独的字符,除了那些被R 四分五裂,r,regex,regex-lookarounds,strsplit,R,Regex,Regex Lookarounds,Strsplit,我想将字符串拆分为单独的字符,除了那些被包围的字符。因此,bce将变成bce。我尝试了(?),它似乎在正则表达式测试仪中工作,但在R中的以下代码中不工作。我做错了什么 X = '<a>bc<d>e' Y = '(?<!<)(?!>)' unlist(strsplit(X,Y,perl=TRUE)) [1] "<" "a" ">" "b" "c" "<" "d" ">" "e" X='bce' Y='(?)' unlist(str
包围的字符。因此,bce
将变成
b
c
e
。我尝试了(?)
,它似乎在正则表达式测试仪中工作,但在R中的以下代码中不工作。我做错了什么
X = '<a>bc<d>e'
Y = '(?<!<)(?!>)'
unlist(strsplit(X,Y,perl=TRUE))
[1] "<" "a" ">" "b" "c" "<" "d" ">" "e"
X='bce'
Y='(?)'
unlist(strsplit(X,Y,perl=TRUE))
[1] “b”“c”“e”
(]+>|\S)
似乎有效。这将首先尝试将三角形括号与其所包含的所有内容匹配,如果不匹配,则匹配单个字符
regmatches(X,gregexpr(“]+>\\\S”,X))[[1]]
#>[1]“b”c“e”
使用积极的环视而不是消极的:
strsplit('<a>bc<d>e', '(?<=[^<])(?=[^>])', perl=TRUE)
## [[1]]
## [1] "<a>" "b" "c" "<d>" "e"
strsplit(')
详细信息
(?这似乎与Rs正则表达式的风格有关。你可以尝试stringi::stri_split_regex(X,Y,省略_empty=TRUE)
instedi为Y添加了两个积极的lookarounds,这似乎起到了作用。我猜strsplit不会拆分,除非你真的告诉它去寻找存在的东西。Y='(?)(?在中,有一些关于空字符串匹配的提示:“小心:需要区分空(rm_eo==0)和非空(rm_eo>0)匹配。在前一种情况下,提取的标记是下一个字符。否则,它是匹配开始之前的所有内容,可能是空字符串(而不是空字符串)。”令牌“”(严格意义上的)。“它可以工作,但不能与strsplit
一起工作,它需要一个正则表达式作为分隔符,并且有一个特殊的情况来拆分每个字符,我允许自己编辑您的帖子,使您的建议生效。
regmatches(X, gregexpr("<[^>]+>|\\S",X))[[1]]
#> [1] "<a>" "b" "c" "<d>" "e"
strsplit('<a>bc<d>e', '(?<=[^<])(?=[^>])', perl=TRUE)
## [[1]]
## [1] "<a>" "b" "c" "<d>" "e"