Квантификаторы регулярных выражений Javascript: что означает совпадение ноль или более раз

Поэтому я просто пытаюсь уточнить, что именно делает квантификатор * в регулярном выражении javascript. Определение из MDN гласит следующее:

x* Соответствует предыдущему элементу "x" 0 или более раз. Например, /bo*/ соответствует «буооо» в «Призрак загудел» и «б» в «Птичка запела», но ничего не соответствует в «Козёл хрюкнул».

Я понимаю это определение так, что оно будет соответствовать букве «b», а также букве «b», за которой следует любое количество символов «o». Так не будет ли тот факт, что он соответствует символу «b», соответствовать 1 совпадению вместо 0? Я предполагаю, что это утверждение «0 или более раз» сбивает меня с толку.


person Austin737    schedule 21.04.2020    source источник


Ответы (1)


Важная фраза здесь — «предыдущий элемент». Если предшествующий элемент является одним символом, как здесь, это означает, что этот символ может повторяться 0 или более раз. bo* будет соответствовать b, за которым следует ноль или более o. Только o* будет соответствовать нулю или более o. b(?:oo)* будет соответствовать b, или boo, или boooo и т. д. (ноль, или два, или четыре, или шесть, ... os)

Посмотрите на токен, который непосредственно предшествует квантификатору, чтобы увидеть, что он измеряет.

В другом примере [ab][xy]* будет соответствовать a, или b, или ax, или axxxy, или byxyy. Маркер, предшествующий квантификатору [xy], который соответствует либо x, либо y, повторяется ноль или более раз.

person CertainPerformance    schedule 21.04.2020
comment
Итак, я думаю, что теперь у меня есть лучшее понимание, основанное на том, что вы сказали о том, что этот персонаж ПОВТОРЯЕТСЯ 0 или более раз. Таким образом, в случае, когда за b следует символ, отличный от o, это тот факт, что b не повторяется, так что это составляет ноль или более раз... верно? - person Austin737; 21.04.2020
comment
С bo* маркером, непосредственно предшествующим квантификатору *, является o, в то время как b обычно совпадает, а затем o повторяется 0 или более раз. - person CertainPerformance; 21.04.2020