除非下一个字符为.
,否则我想在:
或)
处拆分字符串
以下问题:R strsplit: Split based on character except when a specific character follows为什么不
strsplit("Glenelg (Vic.)",'\\.|:(?!\\))', perl = TRUE)
返回
[[1]]
[1] "Glenelg (Vic)"
相反,它在.
处分裂,就像这样:
[1] "Glenelg (Vic" ")"
答案 0 :(得分:1)
未正确分组。 \.|:(?!\))
匹配字符串中任何位置的.
或不跟:
的{{1}}。如果将)
和.
模式:
分组,它将起作用。
但是,您可以根据字符类使用更好的正则表达式版本:
'(?:\\.|:)(?!\\))'
在这里,strsplit("Glenelg (Vic.)",'[.:](?!\\))', perl = TRUE)
[[1]]
[1] "Glenelg (Vic.)"
与[.:](?!\))
或.
匹配,但都没有立即跟在:
之后。
请参见regex demo。
答案 1 :(得分:0)
您也可以使用stringr
:
stringr::str_split("Glenelg (Vic.)","[\\.:](?!\\))")
[[1]]
[1] "Glenelg (Vic.)"