首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:只有在特殊正则表达式不匹配时才进行拆分

R:只有在特殊正则表达式不匹配时才进行拆分
EN

Stack Overflow用户
提问于 2013-09-10 13:06:49
回答 3查看 144关注 0票数 5

当每个and/ERT没有被"/V“后面的单词”继承“时,你会如何分裂:

代码语言:javascript
复制
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"    
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-10 13:19:23

实际上,你需要用另一种方式来处理这个问题:

代码语言:javascript
复制
(?<=and/ERT)\\s(?!\\S+/V)
                  ^^^^

您将需要使用\\S+,因为使用.*会阻止匹配,即使/V前面有两个单词。

顺便说一下,\\S+与非空格匹配。

最后,可以安全地忽略最后一个周期。

regex101演示

票数 4
EN

Stack Overflow用户

发布于 2013-09-10 13:14:26

事实上,你犯了一个小小的错误,但它导致了一切都不起作用:

代码语言:javascript
复制
(?<=and/ERT)\\s(?![^\\s/]+/V)
                  ^^^^^^^
            match one or more characters that are not white space or forward slash /

顺便说一句,不需要在/V之后的点/V

编辑:,我根据@smerny的评论和你的编辑做了一些编辑。

票数 4
EN

Stack Overflow用户

发布于 2013-09-10 13:18:49

试试这个:

代码语言:javascript
复制
(?<=and/ERT)\\s(?![a-zA-Z]+/V)

问题是,您的/V先于任何一个,并且您的示例在您的空间和/V之间有不止一个字符。

[a-zA-Z]+/V确保空格和/V之间唯一的东西是一个由字母组成的单词。我相信这是你根据你的描述和例子提出的要求。

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18719809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档