Javascript正则表达式量词:匹配零次或多次是啥意思

Posted

技术标签:

【中文标题】Javascript正则表达式量词:匹配零次或多次是啥意思【英文标题】:Javascript regular expression quantifiers: what does it mean to match zero or more timesJavascript正则表达式量词:匹配零次或多次是什么意思 【发布时间】:2020-04-21 04:35:12 【问题描述】:

所以我只是想澄清一下 javascript 正则表达式中的 * 量词到底是做什么的。 MDN 的定义如下:

x* 匹配前面的“x”项 0 次或多次。例如,/bo*/ 匹配“A ghost booooed”中的“boooo”和“A bird warbled”中的“b”,但“A goat grunted”中不匹配。

我对这个定义的理解是它会匹配一个“b”,它会匹配一个“b”后跟任意数量的“o”字符。那么它匹配“b”字符的事实是否不构成 1 匹配而不是 0?我猜是“0 次或多次”语句让我失望了。

【问题讨论】:

【参考方案1】:

其中的重要短语是“前面的项目”。如果前面的项目是单个字符,就像这里一样,这意味着 那个 字符可以重复 0 次或更多次。 bo* 将匹配 b,后跟零个或多个 os。单独的 o* 将匹配零个或多个 os。 b(?:oo)* 将匹配b,或boo,或boooo 等(零,或二,或四,或六,...os)

查看紧接在量词之前的标记,看看它在量化什么。

再举一个例子,[ab][xy]* 将匹配a、或b、或ax、或axxxy、或byxyy。与 xy 匹配的量词之前的标记 [xy] 会重复零次或多次。

【讨论】:

好的,所以我想我现在有了更好的理解,基于你所说的“那个角色被重复 0 次或更多次”。因此,在“b”后跟“o”以外的字符的情况下,事实上“b”没有重复,因此构成“零次或多次”......对吗? 对于bo*,紧接在* 量词之前的标记是o,而b 正常匹配,然后o 重复0 次或更多次。

以上是关于Javascript正则表达式量词:匹配零次或多次是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

JS正则表达式从入门到入土—— 量词

Python 正则表达式零次或多次出现

正则表达式

大家好,帮我理解一下下面的几个java里的正则表达式的意思?在java的Pattern类里出来的

正则表达式匹配

正则表达式