Регулярное выражение: Lookaround до / после матча
Рассмотреть этот текст: 100 dollars
Если я хочу соответствовать 100
(используя lookahead), я написал это:
\d{3}(?= dollars)
и, насколько я знаю, этот шаблон означает: найти 3 цифры только тогда, когда (если) он сопровождается " dollars"
но предвкушение можно использовать странным образом; снова соответствие 100
в вышеуказанном тексте:
(?=\d{3} dollars).{3}
Как это возможно? Как мы интерпретируем это второе использование Lookahead?
1 ответ
Помните, что обходные пути являются утверждениями нулевой ширины. Это означает, что они не потребляют символы, поскольку они совпадают. Они в основном чек из заданной точки в строке. Во втором регулярном выражении движок сначала проверяет, совпадает ли с определенной точки в строке шаблон внутри поискового обхода, и если да, то сопоставление продолжается с этого места на этот раз, потребляя символы (.{3}
).