regex - nodejs 正则表达式 - 为什么我们在以下正则表达式中需要 "?"

标签 regex node.js

我对以下正则表达式有疑问:

match = /^([^[]+?)(\[.*\])?$/.exec(path);

我不明白“?”的行为在第一个表达式中:

^([^[]+?)

我的意思是,如果这个表达式是一个独立的正则表达式,并且路径是“abc[def]”,我会得到:“a”作为 match[1],对吗? (由于懒惰的匹配)。 现在,当我添加第二个表达式时,match[1] 是:“abc”。 您能解释一下其中的区别吗?

谢谢, 李

最佳答案

+ 之后的 ? 将正则表达式引擎的行为交换为非贪婪。默认情况下,引擎尝试匹配最大的可用字符串。带有尾随的 ? 它会尝试获得最短的。

更多信息可在此处获取:http://www.regular-expressions.info/repeat.html

关于regex - nodejs 正则表达式 - 为什么我们在以下正则表达式中需要 "?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145203/

相关文章:

javascript - 使用nodejs vash模板通过脚本标签发送数据

java - 为什么这个正则表达式在 Java 中不能像预期的那样工作?

java - XML 架构模式错误

java - 在字符串中找不到模式

node.js - OIDCStrategy passport-azure-ad passport js 有问题吗?

javascript - NodeJs 事件调用函数

java正则表达式将数字与字符串分开

regex - 非捕获子例程

javascript - 聚合不是函数 - Mongoose Nodejs

javascript - 如何检查 omegle 与 nodejs 集成中的错误(未处理的异常)?