我对以下正则表达式有疑问:
match = /^([^[]+?)(\[.*\])?$/.exec(path);
我不明白“?”的行为在第一个表达式中:
^([^[]+?)
我的意思是,如果这个表达式是一个独立的正则表达式,并且路径是“abc[def]”,我会得到:“a”作为 match[1],对吗? (由于懒惰的匹配)。 现在,当我添加第二个表达式时,match[1] 是:“abc”。 您能解释一下其中的区别吗?
谢谢, 李
最佳答案
+
之后的 ?
将正则表达式引擎的行为交换为非贪婪。默认情况下,引擎尝试匹配最大的可用字符串。带有尾随的 ?
它会尝试获得最短的。
关于regex - nodejs 正则表达式 - 为什么我们在以下正则表达式中需要 "?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145203/