繁体   English   中英

在正则表达式中反转匹配

[英]Invert match in regex

有没有办法(或可能)使用正则表达式来反转匹配模式(不是预先给定的单词)?

例如

输入字符串:

a:b, c:d, a:b1,s:sad

模式是

a:[^,]+,?

此模式匹配字符串中的“a:b”和“a:b1”。 我可以替换/反转匹配剩余部分,即“c:d”和“s:sad”而不使用grep -v -e?

例如,继续,演示输出用“[TAG]”替换剩余部分:

a:b,[TAG], a:b1,[TAG]

[^ pattern]或(?!pattern)技巧失败,这里不允许使用带-e -v选项的grep。

谢谢!

表达方式

/((a:[^,]+,?\s?)(((?!a:[^,]+).)+(,|$))+)/\2[TAG]\5/g

将取代

a:b, c:d, a:b1,s:sad

a:b, [TAG], a:b1,[TAG]

但是我不确定我理解你对(?!pattern)不起作用的评论。 我在https://regex101.com/进行测试。

[^,:]+(?<!\ba):[^,]+,?

您只需使用grep -P参阅演示。

https://regex101.com/r/hE4jH0/25

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM