2012-05-05 3 views
2

Мне нужна помощь в создании регулярного выражения.
Мне нужно получить все слова между первым ключевым словом и последним ключевым словом. Аргентина: Дания:Java Regex Отменить определенное слово

Предпопряжите первое ключевое слово: All, и последнее ключевое слово: At.

Пример ввод:

Все а ABCD abcccc АВдд В

Выхода должен быть:

а ABCD abccc АВдд

Это мой текущим regex прямо сейчас:

(\\s*All (\\w|\\s)+(At)) 

Моя проблема заключается в том, что если когда-либо вход, как это:

Все а а а а а В В

Выход:

а а abc abc abc at

ответ

3

Попробуйте нежадное соответствие для слов в середине:

(\s*All (\w|\s)+?(At)) 

Примечания добавленного ? знака. Это должно показать движку regex вернуть кратчайшее соответствие для части (\w|\s)+, надеясь получить нужный результат.

+0

Это работает, спасибо XD – nfinium

0

Сократите строку перед:

String toSearchFor = source.substring (source.indexOf ("All"), source.indexOf ("At")+"At".length); 

Однако, я не уверен, что делать с

"At At All abc At All def All ghi At jkl At At All" 
Смежные вопросы