【发布时间】:2014-09-24 10:00:42
【问题描述】:
我已经实现了一个用于模式搜索的 trie,并且运行良好。使用这个 trie,我可以找到 O(n) 复杂度的文本中存在的所有关键字。
问题是我想为我的模式(关键字)使用正则表达式,并希望找到文本中存在的所有关键字。
示例: 我写 [a-z0-9\.]{6, 30}\@[a-z0-9\.]{2,12}\.[a-z0-9]{2,6} 查找电子邮件 ID,它会为我获取正确的内容,但它不会找到位于第一个或第二个块下的子字符串。
例如,我将文本设置为。
examplegmail@gmail.com
关键字是:ample mail
在本例中,此正则表达式将告诉我电子邮件 ID 的结束位置,但不会告诉我有关 ample 或 mail 关键字的任何信息。
编辑:假设我的正则表达式为 a*(b|cd?)+ DFA 看起来像::
现在我在这个数据中有像 dfdfdacbcbbcb 这样的数据,它会告诉我到达 ac 后每个字符的模式等等,但是我应该如何到达知道结束模式的长度????
【问题讨论】:
-
你使用什么语言?
-
基本上我使用的是 C,但我不要求使用正则表达式库。我正在创建一个 trie,基于将它们视为关键字的正则表达式...
标签: regex string algorithm pattern-matching trie