从正则表达式匹配中排除表达式
exclude expression from regex match
我已经浏览了关于正则表达式的 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 查询中使用它。
似乎以下内容确实如此(根据描述)
pol.* 6 (?:(?=.*cod [37])|(?!.*cod [42])).*
注意它可能等同于
pol.* 6 (?!.*cod [42]).*
可以改进以减少回溯
pol[^ ]* 6 (?!.*cod [42]).*
我已经浏览了关于正则表达式的 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 查询中使用它。
似乎以下内容确实如此(根据描述)
pol.* 6 (?:(?=.*cod [37])|(?!.*cod [42])).*
注意它可能等同于
pol.* 6 (?!.*cod [42]).*
可以改进以减少回溯
pol[^ ]* 6 (?!.*cod [42]).*