正则表达式替换所有除捕获的表达式

时间:2016-08-27 11:36:48

标签: regex

我正在尝试使用正则表达式来查找除了我不想替换的数据之外的所有内容。我当时想要替换除找到的表达式之外的所有内容。

我的匹配是查找所有以“CN =”开头并以12个字符结尾的单词。我目前正在使用逻辑(!?CN =)\ w {12}。它在字符串中找到两个匹配项。但是,我想找到除了这两个事件之外的所有内容并找到其他所有内容并用空值替换其他所有内容,以便我只有两个CN =字值。

附图显示了我的测试和结果。我想要相反的影响。

image

谢谢, 佛瑞德

1 个答案:

答案 0 :(得分:2)

您可以使用.*捕获匹配前的内容,并添加$(输入结束)作为CN=\w{12}的替代方式:

.*?($|CN=\w{12})

仅替换捕获的组:

$1

Java regex tester上的演示

注意:我没有添加!?,因为你写了 ...以“CN =”开头的单词。如果你真的需要在CN=之前保留感叹号,那么你应该将它添加到正则表达式中。