javascript - 为什么不情愿的量词选择下一个原子正则表达式参数?
问题描述
我知道根据正常量化选择并返回最小值,但我不明白为什么它将下一个正则表达式原子的选择定义为不贪婪。有谁知道是否存在表示不情愿量词的原始表达式(如果存在)?如果我看到了我能理解的表达,但我搜索并发现只有与和的联合使用的引用,?=
但?!
我不知道是否是这种情况,因为我无法使用它。
如何工作(我猜):
console.log("greedy regexp example(Expected \"'blablabla' is a 'bla'\")");
console.log(("'blablabla' is a 'bla' so...").match(/'.*'/));
console.log("non-greedy regexp example(Expected \"''\" but returns \"'blablabla'\")");
console.log(("'blablabla' is a 'bla' so...").match(/'.*?'/));
解决方案
*
使表达式变得贪婪
?
使表达式变得懒惰
在这种情况下,match(/'.*?'/)
读作“单引号后跟任何字符 (.) 零次或多次 (*),但仅在下一个 (?) 单引号之前”
大多数正则表达式备忘单将描述这些类型的表达式。就个人而言,我喜欢https://www.rexegg.com/regex-quickstart.html(状态 * 是贪婪的)
在正则表达式的上下文中,“懒惰”和“贪婪”是什么意思?状态*
为贪婪
https://docs.oracle.com/javase/tutorial/essential/regex/quant.html状态*
为贪婪。
推荐阅读
- python - 如何使用外键 django 显示来自父模型的数据
- typescript - 从具有键和值的接口创建对象 - 打字稿
- go - 如果您知道要返回的类型,您还会使用输出参数吗?
- html - 为什么我的 CSS 在移动设备上与在狭窄的桌面浏览器上看起来不同,我该如何更改?
- git - 如何使用另一个更活跃的 github 项目的文件来处理我的 git 项目?
- python - Google Map API 拒绝请求
- python - 连接相同列数但行数不同的 55 个数据场,并用零填充缺失值
- azure-devops - 如何从 Azure Devops 导出变量组
- database - Mongo 是单个集合还是多个集合?
- python - 如何让 Python ufuncs 返回大于正常浮点大小限制的浮点数?