【发布时间】:2020-02-28 21:46:45
【问题描述】:
我想将字符串拆分为单独的字符,除了< 和> 包围的字符。因此<a>bc<d>e 将变为<a> b c <d> e。我尝试了(?<!<)(?!>),它似乎在正则表达式测试器中有效,但在 R 中的以下代码中无效。我做错了什么?
X = '<a>bc<d>e'
Y = '(?<!<)(?!>)'
unlist(strsplit(X,Y,perl=TRUE))
[1] "<" "a" ">" "b" "c" "<" "d" ">" "e"
【问题讨论】:
-
这似乎与 Rs 正则表达式风格有关。你可以试试
stringi::stri_split_regex(X, Y, omit_empty = TRUE) -
我为 Y 添加了一些积极的外观,这似乎可以解决问题。我猜 strsplit 不会分裂,除非你真的告诉它寻找那里的东西。
Y = '(?<!<)(?!>)(?<=.)(?=.)' -
在source code中,有一些关于空字符串匹配的提示:“小心:需要区分空(rm_eo == 0)和非空(rm_eo > 0)匹配。前一种情况,提取的token是下一个字符,否则就是匹配开始之前的所有内容,可能是空字符串(不是严格意义上的“token”)。"
标签: r regex regex-lookarounds strsplit