【发布时间】:2015-12-02 17:23:36
【问题描述】:
有没有办法(或可能)使用正则表达式反转匹配模式(不是预先给定的词)?
例如
输入字符串:
a:b, c:d, a:b1,s:sad
模式是
a:[^,]+,?
此模式匹配字符串中的“a:b”和“a:b1”。我可以在不使用 grep -v -e 的情况下替换/反转匹配剩余部分,即“c:d”和“s:sad”吗?
例如继续,演示输出将剩余部分替换为“[TAG]”:
a:b,[TAG], a:b1,[TAG]
[^pattern] 或 (?!pattern) 技巧失败,此处不允许使用带有 -e -v 选项的 grep。
谢谢!
【问题讨论】:
-
您可以编写另一个正则表达式来捕获其他字符串,即
[^a]:[^,]+,? -
使用 PCRE/Perl,你可以使用
a:[^,]+,?(*SKIP)(*F)|(?:(?!a:[^,]+,?).)+。
标签: regex