Javascript квантификаторы регулярных выражений: что означает совпадение ноль или более раз - PullRequest
1 голос
/ 21 апреля 2020

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

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

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

1 Ответ

1 голос
/ 21 апреля 2020

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

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

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

...