有没有办法(或可能)使用正则表达式来反转匹配模式(不是预先给定的单词)?
e.g。
输入字符串:
a:b, c:d, a:b1,s:sad
模式是
a:[^,]+,?
此模式匹配" a:b,"和" a:b1,"在字符串中。我可以替换/反转匹配剩余部分,即" C:d"并且" s:悲伤"不使用grep -v -e?
e.g。继续,演示输出用" [TAG]":
替换剩余部分a:b,[TAG], a:b1,[TAG]
[^ pattern]或(?!pattern)技巧失败,此处不允许使用带-e -v选项的grep。
谢谢!
答案 0 :(得分:1)
表达式
/((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/进行测试。
答案 1 :(得分:0)