2013-12-10 4 views
0

Мой текст:regex: как включить первое появление перед шаблоном?

120 something 130 somethingElse Paris 

Моя цель состоит в том, чтобы захватить 130 somethingElse Paris, что означает только последнее вхождение числа ДОParis

Я попытался:

\d+.*Paris 

Но это захватывает ЦЕЛОМ строка (от первого появления цифры)

Правило:

  • Захват всего до Paris, пока не будет найдено первое знакомство.

Любые подсказки?

Отношения

ответ

0

Вы должны добавить? после *, чтобы сделать его неживым. Как это:

\d+.*?Paris 
+0

Помните, что это решение дорого стоит на входной строке с большим количеством цифр перед желаемым. Поскольку для этого требуется много трассбеков. – Jan

1

меньше tracebacks и не полагаясь на алчности:

\d+[^0-9]*Paris 
0

Вы можете использовать этот шаблон:

(\d+\D*?)+Paris 

другие записи группы захвата перезаписываются последним.

Леновый квантор *? используется для принудительной остановки шаблона при первом слове «Париж». В противном случае в строке с более чем одним словом «Париж» образец вернет последнюю группу после последнего слова «Париж» с жадным квантификатором.