我遍历了正则表达式上的SO的不同页面(以及与否定,否定,排除,过滤等相关的许多正则表达式问题),以找到正则表达式的解决方案,到目前为止没有任何运气。
我有以下条目列表:
poliester 6 blanco cod 3 xyz
pol 6 negro cod 3 abc
poliester 6 verde cod 7
pol 6 vde cod 7
pol 4 amarillo cod 3
poliester 3 zapote cod 7
poliester 6 cafe
poliester 6 negro cod 4 jpg
poliester 3 456 verde cod 3
pol 6 blanco cod 2
我需要获取其中包含pol.* 6 .*
以及cod 3
,cod 7
或未提及cod 4
或cod 2
的文件。
我在regex101.com上尝试过的许多正则表达式都失败了,或者是因为它们检索了对cod 4
或cod 2
的提及,或者是由于未能检索到poliester 6 cafe
行。 >
在我尝试过的一些正则表达式下面:
pol.* 6 .*(cod [^42])
pol.* 6 .*((?!cod [^42])|cod 3|cod 7).*
pol.* 6 .*((?<!cod [^42])|cod 3|cod 7).*
预期结果是:
poliester 6 blanco cod 3 xyz
pol 6 negro cod 3 abc
poliester 6 verde cod 7
pol 6 vde cod 7
poliester 6 cafe
到目前为止,我正在研究正则表达式(使用regex101),我计划在以后的R查询中使用它。
答案 0 :(得分:0)
似乎(根据描述)确实如此
pol.* 6 (?:(?=.*cod [37])|(?!.*cod [42])).*
请注意,这可能只是
pol.* 6 (?!.*cod [42]).*
可以进行改进以减少回溯
pol[^ ]* 6 (?!.*cod [42]).*