前言
编程中的正则表达式通常用于验证字符串。找出给定字符串是否满足给定表达式的任务在编写程序时经常发生。正则表达式在所有配置文件和设置中也很常见。但是,如果您可以在程序文本中使用编程语言中通常的否定运算符,那么在配置中情况可能会更加复杂。假设只有当带有条件的字符串不以某些子字符串开头时,您才需要应用一些配置部分,尽管配置语法只允许进行肯定检查(字符串是否满足正则表达式)。
所以,由于这样的问题经常把我带入死胡同,我决定用更一般的形式来表述它。
问题的形成
给定一个正则表达式,R其中包含任何、任意、以前未知的标记组合,在语法上对于PCRE引擎是正确的。你想找到一个正则表达式!R,它的语言是语言的补码R。也就是说,任何匹配的字符串R都不匹配!R,反之亦然。
有没有通用的解决方案?如果是这样,那么最好包括R作为子表达式。
Let
R- 任何有效的正则表达式,然后是补充它的正则表达式:这里没有什么特别要解释的——我们只捕获整个文本,如果其中的某个地方没有匹配模式
R。https://regex101.com/r/Kqd1qU/1
找到了类似于@ReinRaus 建议的补充正则表达式的更简单版本。
https://regex101.com/r/Kqd1qU/11/tests