一个微型的正则表达式引擎 | A micro regular expression engine
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 文件