什么时候问题对于正则表达式来说太复杂了?

2024-02-21

请不要回答显而易见的问题,但是有哪些限制标志告诉我们不应使用正则表达式来解决问题?

例如:为什么完整的电子邮件验证对于正则表达式来说太复杂?


正则表达式是以下内容的文本表示有限状态自动机 http://en.wikipedia.org/wiki/Finite_state_automata。也就是说,它们仅限于非递归匹配。这意味着您的正则表达式中不能有任何“范围”或“子匹配”的概念。考虑以下问题:

(())()

所有左括号都与右括号匹配吗?

显然,当我们以人类的角度来看这一点时,我们很容易看出答案是“是”。然而,没有正则表达式能够可靠地回答这个问题。为了进行这种处理,您将需要一个完整的下推自动机 http://en.wikipedia.org/wiki/Pushdown_automaton(就像带有堆栈的 DFA)。这最常见于解析器的伪装,例如由 ANTLR 或 Bison 生成的解析器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么时候问题对于正则表达式来说太复杂了? 的相关文章

随机推荐