当每个and/ERT没有被"/V“在后面的单词”继承“时,你会如何分裂:
text <- c("faulty and/ERT something/VBN and/ERT else/VHGB and/ERT as/VVFIN and/ERT not else/VHGB propositions one and/ERT two/CDF and/ERT three/ABC")
# my try - !doesn't work
> strsplit(text, "(?<=and/ERT)\\s(?!./V.)", perl=TRUE)
^^^^
# Exptected return
[[1]]
[1] "faulty and/ERT something/VBN and/ERT else/VHGB and/ERT as/VVFIN and/ERT"
[2] "not else/VHGB propositions one and/ERT"
[3] "two/CDF and/ERT"
[4] "three/ABC" 发布于 2013-09-10 13:19:23
实际上,你需要用另一种方式来处理这个问题:
(?<=and/ERT)\\s(?!\\S+/V)
^^^^您将需要使用\\S+,因为使用.*会阻止匹配,即使/V前面有两个单词。
顺便说一下,\\S+与非空格匹配。
最后,可以安全地忽略最后一个周期。
regex101演示
发布于 2013-09-10 13:14:26
事实上,你犯了一个小小的错误,但它导致了一切都不起作用:
(?<=and/ERT)\\s(?![^\\s/]+/V)
^^^^^^^
match one or more characters that are not white space or forward slash /顺便说一句,不需要在/V之后的点/V。
编辑:,我根据@smerny的评论和你的编辑做了一些编辑。
发布于 2013-09-10 13:18:49
试试这个:
(?<=and/ERT)\\s(?![a-zA-Z]+/V)问题是,您的/V先于任何一个,并且您的示例在您的空间和/V之间有不止一个字符。
[a-zA-Z]+/V确保空格和/V之间唯一的东西是一个由字母组成的单词。我相信这是你根据你的描述和例子提出的要求。
演示
https://stackoverflow.com/questions/18719809
复制相似问题