/\((.*)\)/
和/\(([^\)]*)\)/
之间是否存在差异?
特别是,第二个正则表达式是否与行结束匹配,而第一个正则表达式不匹配?
答案 0 :(得分:4)
是的,AFAIK的点与大多数没有修饰符的正则表达式引擎中的换行符不匹配。
编辑:显然JS甚至没有这个选项。我个人认为否定的角色课程是要走的路;我几乎没有在正则表达式中使用点。答案 1 :(得分:2)
另一个重要区别是点将匹配)
。假设您正在尝试匹配
blah blah (foo) blah blah (bar)
正则表达式/\(.*\)/
将与(foo) blah blah (bar)
匹配,因为*
是贪婪的。你可以通过使用一个不情愿的量词来解决这个问题 - /\(.*?\)/
- 但是如果你想匹配 last 那个怎么办?你知道这是字符串中的最后一件事,所以你只需要添加字符串结尾的锚点/\(.*?\)$/
- 但现在它又回到匹配(foo) blah blah (bar)
了。在这种情况下,只有否定的角色类会给你你想要的东西:/\([^)]*\)$/
。