记得在前面测试引擎的类型的时候用正则表达式‘nfa|nfa not’来匹配文本‘nfa not’,因为DFA和POSIX NFA不支持忽略优先量词,所以如果匹配到的是‘nfa’,则是NFA:
对于NFA而言,会逐个按顺序尝试多选结构的分支,哪个先匹配到返回的就是哪个:
对于DFA而言,却总是返回匹配长度最长的文本:
test.txt中的文本是‘nfa not’,其实这也跟它的文本主导的特性有关。
有序多选结构的陷阱
如果需要匹配‘Jan 31’之类的文本,可能需要这样:
J

本文探讨了正则表达式中有序多选结构的匹配规则。对于NFA,它会按顺序尝试分支,而DFA则选择最长匹配。在处理如'Jan 31'这样的文本时,需要考虑分支的排列以避免陷阱。
最低0.47元/天 解锁文章
2026

被折叠的 条评论
为什么被折叠?



