首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计用于搜索模式的正则表达式,而不是验证模式?

如何设计用于搜索模式的正则表达式,而不是验证模式?
EN

Stack Overflow用户
提问于 2015-06-25 17:38:47
回答 1查看 206关注 0票数 0

正如我们所了解的,给定正则表达式模式(例如,A B A B A C),我们可以将其转换为DFA。在这个例子中,它就像一个链(您可以测试它这里)。

这个“链式”DFA可以判断给定的字符串是否与模式匹配(即接受/拒绝它);但不能判断字符串中是否有任何事件,并标识所有字符串

示例:假设这是要搜索的字符串:A B C A B A B A B A C A B C

虽然有一个从第6个字符开始的事件,但“链状”DFA无法分辨这一点。它所能做的就是拒绝这个字符串。

问题:是否有可能设计支持这种功能的正则表达式?

(注:我理解这个问题有点令人困惑,我想澄清一下,它使你感到困惑。)

EN

回答 1

Stack Overflow用户

发布于 2015-06-25 18:22:37

包含子字符串ABABAC的字符串的语言由正则表达式匹配:

代码语言:javascript
复制
.*ABABAC.*

其中,符号.表示与任何单个输入符号匹配的子表达式(例如,如果输入语言只有符号ABC,则为(A|B|C) )。要判断一个字符串是否有子字符串ABABAC,可以从这个正则表达式构建NFA或DFA,并检查它是否接受您的字符串。

使用(单个)标准N/DFA无法确定子字符串在输入字符串中的位置,因为定义了一个N/DFA只返回一位信息(接受/拒绝)。但是,可以实现一个“增广N/DFA”,该“增广N/DFA”除了匹配输入之外,还可以跟踪每个状态转换在字符串中最后发生的位置;该信息足以有效地重建子字符串的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31057097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档