Регулярное выражение вопроса - PullRequest
2 голосов
/ 16 марта 2010

У меня есть такой текст:

dagGeneralCodes$_ctl1$_ctl0

Some text

dagGeneralCodes$_ctl2$_ctl0

Some text

dagGeneralCodes$_ctl3$_ctl0

Some text

dagGeneralCodes$_ctl4$_ctl0

Some text

Я хочу создать регулярное выражение, которое извлекает последнее вхождение dagGeneralCodes $ _ctl [число] $ _ ctl0 из текста выше.результат должен быть: dagGeneralCodes $ _ctl4 $ _ctl0

Заранее спасибо
Wael

Ответы [ 3 ]

3 голосов
/ 16 марта 2010

Это должно сделать это:

.*(dagGeneralCodes\$_ctl\d\$_ctl0)

.* в передней части является жадным, поэтому изначально он будет захватывать всю входную строку. Затем он будет возвращаться назад, пока не найдет последнее вхождение нужного вам текста.

В качестве альтернативы вы можете просто найти все совпадения и сохранить последний, что я бы предложил.

Также, вероятно, потребуется дать конкретный совет, в зависимости от того, на каком языке вы это делаете. Например, в Java вам нужно будет использовать режим DOTALL, чтобы . соответствовал символам новой строки, потому что обычно это т. Другие языки называют этот многострочный режим. В Javascript есть несколько иное решение для этого и т. Д.

1 голос
/ 16 марта 2010

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

[\d\D]*(dagGeneralCodes\$_ctl\d+\$_ctl0)

Я использую [\d\D] вместо ., чтобы он соответствовал также новой строке. * используется greedy способом, так что он будет потреблять все, кроме последнего вхождения dagGeneralCodes$_ctl[number]$_ctl0.

0 голосов
/ 16 марта 2010

Мне действительно нравится использовать этот Regular Expression Cheatsheet ;это бесплатно, одна страница, и напечатано, помещается на моей стене куба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...