有句话希望你能牢牢记住:把必须匹配的情况考虑周全并写出一个匹配结果符合预期的正则表达式很容易,但把不需要匹配的情况也考虑周全并确保它们都将被排除在匹配结果以外往往要困难得多。
多重嵌套的子表达式可以构造出功能极其强大的正则表达式来,但那难免会让模式变得难以阅读和理解,而这也正式很多人觉得正则表达式难以学习和掌握的原因之一。这种表面现象掩盖了这样一个事实:绝大多数嵌套子表达式都没有它们看上去那么复杂。
- 匹配空白行: ^\s*\n
- SQL 语句中 from 上面倒数第二行忘了逗号结尾缩小范围: [^,]$([\r]?\n)(.*)([\r]?\n)(\s*)from
- 匹配重复的英文单词 \b(\w+)(\s+\1\b)+