我不确定它怎么称呼:否定、互补或倒置。这个概念是这样的。例如有字母“ab”
R = 'a'
!R = the regexp that matche everyhting exept what R matches
在这个简单的例子中它应该是这样的
!R = 'b*|[ab][ab]+'
如何调用这样的正则表达式?我从我的研究中记得有一种方法可以计算它,但它很复杂并且通常很难手工制作。是否有一个很好的在线工具(或常规软件)可以做到这一点?
最佳答案
jbo5112的回答给出了很好的实际帮助。但是,在理论上:正则表达式对应于正则语言,因此您要查找的术语是互补的。
补充正则表达式:
- 转换成等价的 NFA。这是 well-known and defined process.
- 通过 powerset construction 将 NFA 转换为 DFA
- 通过使接受状态变为不接受来补充 DFA,反之亦然。
- Convert the DFA到正则表达式。
您现在有了原始正则表达式的补集!
关于regex - 正则表达式的否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349710/