Regex: Lookaround До/После матча

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

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

\d{3}(?= dollars)

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

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

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

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

1 ответ

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

licensed under cc by-sa 3.0 with attribution.