【发布时间】:2009-12-03 22:30:01
【问题描述】:
我正在阅读 Douglas Crockfords Javascript: The Good Parts,我刚刚完成了正则表达式章节。在本章中,他称 JavaScript 的 \b、正向前瞻 (?=) 和负向前瞻 (?!) “不是一个好部分”
他解释了\b 不好的原因(它使用\w 进行单词边界查找,而\w 对于任何使用Unicode 字符的语言都失败),这对我来说似乎是一个很好的理由。
不幸的是,正负前瞻不好的原因被遗漏了,我想不出一个。 Mastering Regular Expressions 向我展示了前瞻带来的力量(当然也解释了它带来的问题),但我真的想不出任何可以将其定性为“不好的部分”的东西。
谁能解释为什么 JavaScript (positive|negative) lookahead 或 (positive|negative) lookahead 一般应该被认为是“不好的”?
【问题讨论】:
-
当我读到那句话时,我在谷歌上搜索了一下,然后想到了这个。很奇怪——他说的其他一切都非常有道理,而且他几乎总是解释说事情“不好”的原因。
-
我同意@Skilldrick。克罗克福德非常擅长解释他在本书中提出的几乎每一个观点的推理,但在这种情况下,他根本没有解释任何事情。在找不到任何解释后,我也用谷歌搜索并最终来到这里。在我看来,只要您了解它们的工作原理以及如果使用不当可能对性能产生的潜在负面影响,正/负前瞻就很棒。
标签: javascript regex regex-lookarounds