MicroRegEx是一个微型的正则表达式引擎.
*
- 零次或者更多次重复+
- 一次或者更多次重复?
- 可选(零次或者一次)a|b
- 匹配a或者b(expr)
- 将expr
作为原子\
- 转义字符
import MicroRegEx
regex = MicroRegEx.compile("(a|b)cd*e?")
result = regex.match("abcde")
print(result)
result = regex.match("acde")
print(result)
将会输出:
False
True
import MicroRegEx
regex = MicroRegEx.compile("(a|b)c?")
regex.plot()
import MicroRegEx
from MicroRegEx.Automaton.NFA2DFA import NFA2DFA
nfa = MicroRegEx.compile("(a|b)c?")
dfa = NFA2DFA(nfa).convert()
dfa.plot()
import MicroRegEx
from MicroRegEx.Automaton.NFA2DFA import NFA2DFA
nfa = MicroRegEx.compile("(a|b)c?")
dfa = NFA2DFA(nfa).convert().simplify()
dfa.plot()
import MicroRegEx
from MicroRegEx.Automaton.NFA2DFA import NFA2DFA
from MicroRegEx.Automaton.Minimal.Brzozowski import Brzozowski
nfa = MicroRegEx.compile("(a|b)c?")
dfa = NFA2DFA(nfa).convert().simplify()
mini_dfa = Brzozowski(dfa).construct()
mini_dfa.plot()
为了更好的理解 MicroRegEx 是如何工作的,我提供了一个 Jupyter Notebook,用户可以按照其中的指引,一步一步的探索 MicroRegEx 的底层原理。
通过了包含 64 个测试样例的测试数据的测试。
运行测试请执行 python ./testing.py
本项目采用 MIT License - 具体细节见 LICENSE.md 文件
- 灵感来自xysun的regex项目
- 少量部分文档来自lihao98722的regular_expression_engine项目
- 测试数据来自Glenn Fowler项目的测试套装.
- 测试脚本修改自regex项目.