Регулярное выражение: Lookaround до / после матча

Рассмотреть этот текст: 100 dollars

Если я хочу соответствовать 100 (используя lookahead), я написал это:

\d{3}(?= dollars)

и, насколько я знаю, этот шаблон означает: найти 3 цифры только тогда, когда (если) он сопровождается " dollars"

но предвкушение можно использовать странным образом; снова соответствие 100 в вышеуказанном тексте:

(?=\d{3} dollars).{3}

Как это возможно? Как мы интерпретируем это второе использование Lookahead?

1 ответ

Решение

Помните, что обходные пути являются утверждениями нулевой ширины. Это означает, что они не потребляют символы, поскольку они совпадают. Они в основном чек из заданной точки в строке. Во втором регулярном выражении движок сначала проверяет, совпадает ли с определенной точки в строке шаблон внутри поискового обхода, и если да, то сопоставление продолжается с этого места на этот раз, потребляя символы (.{3}).

Другие вопросы по тегам