![]() |
1
55
假设您的regexp引擎支持负lookaheads。
编辑:…或者也许你更喜欢使用
编辑(再次):注意lookaheads和lookbehinds通常不是“反转”正则表达式匹配的正确方法。regexp并没有真正设置为进行负匹配,而是将其留给您使用的任何语言。 |
![]() |
2
43
对于Python/Java,
http://www.lisnichenko.com/articles/javapython-inverse-regex.html |
![]() |
3
15
更新了来自的反馈 Alan Moore 在PCRE和类似的变体中,实际上可以创建与不包含值的任何行匹配的regex:
这叫A tempered greedy token . 缺点是它的表现不好。 |
![]() |
4
10
你用什么语言?为此,regex实现的功能和语法至关重要。 你可以用“向前看”。以python为例
要将其分解: ?安德列! 表示“如果后面6个字符不是“Andrea”,则匹配”;如果是,则 \w 表示“字字符”-字母数字字符。这相当于等级[A-ZA-Z0-9 uu] \W{ 6 } 表示6个字的字符。 再忽略 意味着您将排除“Andrea”、“Andrea”、“Andrea”… 另一种方法是使用程序逻辑-使用所有与Andrea不匹配的行,并通过第二个regex检查6个字符。或者首先检查至少6个字的字符,然后检查它是否与Andrea不匹配。 |
![]() |
5
5
|
![]() |
6
4
如果要在regexbuddy中执行此操作,有两种方法可以获取与regex不匹配的所有行的列表。 在测试面板的工具栏上,将测试范围设置为“逐行”。执行此操作时,项目列表所有不匹配的行将显示在同一工具栏上的“列出所有”按钮下。(如果看不到“列出全部”按钮,请单击主工具栏中的“匹配”按钮。) 在grep面板上,您可以打开“基于行”和“反转结果”复选框,以获取正在进行grepping的文件中不匹配行的列表。 |
![]() |
7
3
可以手动编写反转正则表达式。 这里是 a program 自动计算结果。 其结果是机器生成的,通常比手写的要复杂得多。 但结果是可行的。 |
![]() |
8
0
我刚刚想出了这个方法,可能是硬件密集型的,但它正在工作: 可以用空字符串替换与regex匹配的所有字符。 这是一条单行线:
我使用这个是因为我不得不使用一个非常复杂的regex,并且无法理解如何反转它的每个部分。 这将只返回字符串结果,而不返回任何匹配对象! |
![]() |
9
-3
在Perl中,您可以做到 如果($line=~,则处理($line)!/安德列/); |