加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 正则表达式比较

发布时间:2020-12-14 05:49:45 所属栏目:百科 来源:网络整理
导读:有没有任何解决方案可以比较两个正则表达式的包容,部分重叠,不相交,即我想知道如何比较两个正则表达式.其次,如果正则表达式1由正则表达式2取代,我可以组合两个正则表达式. 解决方法 假设您有两个表达式A和B,并希望查看A是否匹配B的子集. 您需要计算B的最小化
有没有任何解决方案可以比较两个正则表达式的包容,部分重叠,不相交,即我想知道如何比较两个正则表达式.其次,如果正则表达式1由正则表达式2取代,我可以组合两个正则表达式.

解决方法

假设您有两个表达式A和B,并希望查看A是否匹配B的子集.

您需要计算B的最小化DFA,然后将这两个表达式组合在一起,形成A和B的并集,然后计算该新表达式的最小化DFA.如果这两个DFA相等,则A匹配B的子集.

从本质上讲,如果不经过构建最小化自动机的过程,就无法正确检查.但是,它会给出一个可验证的真实答案.

组合这两个表达式可以通过创建一个像(A)|(B)这样的新表达式来完成,如果你的引擎支持它,可能会用paranthesis代替非捕获变量.

如果你决定全程去做算法,我已经写了一系列关于这个过程的文章:

http://binarysculpting.com/2012/02/11/regular-expressions-how-do-they-really-work-automata-theory-for-programmers-part-1/

http://binarysculpting.com/2012/02/15/converting-dfa-to-nfa-by-subset-construction-regular-expressions-part-2/

http://binarysculpting.com/2012/03/21/dfa-state-minimization/

要比较两个自动机,您可以检查状态和转换是否相同.他们应该完全平等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读