2016-02-16 3 views
-1

У меня есть предложение «нет, все в порядке», где я пытаюсь обнаружить шаблон «no lag». Мое регулярное выражение - no + (\\s\\w*?\\s?){1,3} + lag. Это не удается. Однако, если мое предложение «не имеет его полного отставания» (обратите внимание, что слово «не имеет апострофа»), то матч преуспевает. Может ли кто-нибудь предложить, как я могу игнорировать апостроф в окне. Я использую шаблон java matcher.Java regex соответствует словам, имеющим апостроф

+0

Я могу удалить апостроф из предложения, но это приведет к другим осложнениям в моей системе. Поэтому я не буду этого делать. – user2481513

+0

На ваш вопрос не хватает точных требований. Из-за этого вы получите массу соответствующих и нерелевантных ответов. –

ответ

2

Вы можете создать новый класс символов с помощью [] нотации, вместо \ w вы должны использовать [\ w '], чтобы все регулярное выражение «no (\ s [\ w'] *? \ S?) {1,3} lag "как строка Java.

Кроме того, для разработки регулярных выражений, я не рекомендовал бы этот сайт: (. *) http://www.regexplanet.com/advanced/java/index.html

+1

А что, если есть запятая? Или больше символов, о которых OP еще не знает? Добавление большего количества символов в класс символов является решением только для одной конкретной строки. –

+0

@ WiktorStribiżew, тогда просто включайте запятую в классе. [\ w ',] – jvalli

+0

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

1

Я думаю, просто не отставать модель будет работать. Если я правильно понял.

+0

Попробуйте это с 'no man lag no man lag no man lag' –

+0

Это должно сделать трюк с не-жадной версией, которая соответствовала бы только 1-му вступлению:' no. *? Lag' – Dfaure

+0

Да .. Я пробовал и кажется работающим , str.replaceAll ("no (. *) lag", "A") ==> A, я делаю что-то не так? (когда str «ни один человек не отстает от человека ...» –

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