2015-09-15 12 views
0

У меня есть следующий текст:Regex: Все перед словом

There are 12.800.500 sorts of animals. 

Теперь я хочу, чтобы получить 12.800.800 как выход, когда я искать «сорта». Как я мог это сделать? Я попытался

\d+(?= sorts) 

, но это дает мне только «500», как результат, а не целое число с точками. Как я могу убедиться, что все «все» до «сортировки» до первого места?

Спасибо!

ответ

1

Текст, который вы пытаетесь соответствовать также включает в себя DOTS не только цифры, так что используйте это регулярное выражение:

\b[\d.]+(?=\s+sorts) 

RegEx Demo

[\d.] будет соответствовать либо цифре или DOT.

Чтобы соответствовать любому некосмическому использованию символов:

\S+(?=\s+sorts) 
+0

спасибо! есть ли способ сделать это «общим», чтобы также работать для запятых и т. д., если регулярное выражение вернется, пока «первое пространство» в основном не увидит «12.800.500» в качестве слова? – Frank

+0

См. Обновленный ответ, вы можете использовать '\ S + (? = \ S + sorts)' – anubhava

+1

да, спасибо, много! – Frank

Смежные вопросы