R: strsplit 负面环视
R: strsplit on negative lookaround
假设我需要将 caabacb
拆分为单独的字母,除非字母后跟 b
,从而导致 "c" "a" "ab" "a" "cb"
。我尝试使用以下行,它在正则表达式测试器上看起来不错,但在 R 中不起作用。我做错了什么?
strsplit('caabacb','(?!b)',perl=TRUE)
[[1]]
[1] "c" "a" "a" "b" "a" "c" "b"
strsplit()
可能需要拆分一些东西。你可以插入例如";"
和 gsub()
.
strsplit(gsub("(?!^.|b|\b)", ";", "caabacb", perl=TRUE), ";", perl=TRUE)
# [[1]]
# [1] "c" "a" "ab" "a" "cb"
您还可以添加匹配任何字符 (?<=.)
的前缀正后视。正后向 (?<=.)
会在每个字符处拆分字符串(不删除字符),但负前向 (?!b)
排除字符后跟 b
的拆分:
strsplit('caabacb', '(?<=.)(?!b)', perl = TRUE)
#> [[1]]
#> [1] "c" "a" "ab" "a" "cb"
假设我需要将 caabacb
拆分为单独的字母,除非字母后跟 b
,从而导致 "c" "a" "ab" "a" "cb"
。我尝试使用以下行,它在正则表达式测试器上看起来不错,但在 R 中不起作用。我做错了什么?
strsplit('caabacb','(?!b)',perl=TRUE)
[[1]]
[1] "c" "a" "a" "b" "a" "c" "b"
strsplit()
可能需要拆分一些东西。你可以插入例如";"
和 gsub()
.
strsplit(gsub("(?!^.|b|\b)", ";", "caabacb", perl=TRUE), ";", perl=TRUE)
# [[1]]
# [1] "c" "a" "ab" "a" "cb"
您还可以添加匹配任何字符 (?<=.)
的前缀正后视。正后向 (?<=.)
会在每个字符处拆分字符串(不删除字符),但负前向 (?!b)
排除字符后跟 b
的拆分:
strsplit('caabacb', '(?<=.)(?!b)', perl = TRUE)
#> [[1]]
#> [1] "c" "a" "ab" "a" "cb"