【发布时间】:2011-06-23 10:43:44
【问题描述】:
我知道你在想什么——“我的天,说真的,不要再说了”——但请耐心等待,我的问题不仅仅是标题。在我们开始之前,我保证我永远不会尝试使用正则表达式解析任意 HTML,或者询问其他人如何。
这里有很多很多的答案来解释为什么你不能这样做,这依赖于正则表达式的正式定义。他们解析常规语言,HTML 是上下文无关的但不是常规的,所以你不能这样做。但我也听说各种语言的许多正则表达式实现都不是严格规则的;它们带有超出正式正则表达式范围的额外技巧。
由于我不知道任何特定实现的细节,例如 perl,我的问题是:
- 正则表达式工具的哪些功能是非常规的?是后面的引用吗?它们是用哪些语言找到的?
- 这些额外的技巧是否足以解析所有上下文无关语言?
- 如果对#2 表示“否”,那么这些额外功能是否完全涵盖了正式的语言类别或类别?我们如何才能快速知道我们试图解决的问题是否在我们的非正则表达式的能力范围内?
【问题讨论】:
-
天哪,说真的,不会再来了
标签: regex