2013-09-27 3 views
0

Мне нужно совместить шаблон, чтобы разбить 's, а также конец ' из слов. Я использовал шаблон регулярного выражения:Java Regex шаблон, соответствующий строке с апострофами

(\\w+)('s$|s'$|'$). 

Мне нужна первая группа. Однако то, что происходит с этим шаблоном, - это слово, подобное cats', совпадает с третьим рисунком i.e '$. Следовательно, мой group(1) по-прежнему имеет cats. Я попытался с помощью шаблона:

(\\w+)('s$|s'$|([^s] & '$). 

Но вот что происходит это за слово abc' группы 1 имеет только ab и группа 2 имеет c'. Любые предложения о том, как справиться с этим.

+1

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

+0

Мне нужно удалить апостроф и 's' из строк, то есть как s, так и s. Также любое слово, которое заканчивается на '. Например, кошки могут быть кошкой и кошкой, а кошка и кошка должны быть кошками. –

+0

Фактически для шаблона (\\ w +) ('s $ | s' $ | '$) есть ли способ, которым я могу присвоить приоритеты' s $ s '$' $, потому что в настоящее время кошки рассматриваются как '$ а не s '$. –

ответ

0

Возможно, вы можете использовать регулярное выражение?

(\\w+)s?'(?:s\\b)? 

И заменить первой группой захвата, или использовать 'назад:

(?<=\\w)s?'(?:s\\b)? 

Я использовал границу слова, чтобы указать, что нет больше никаких писем после s который я думаю, было то, что вы пытаетесь делать с $ и местом.

cats cat's cats' 

Стать:

cat cat cat 

EDIT: Так как вы хотите сохранить cat' в cat':

(?<=\\w)(?:s'|'s\\b) 

cats cat's cats' cat' становится cat cat cat cat'.

+0

Мне также нужна кошка, чтобы оставаться как кошка. –

+0

@ that_me123 Обновлено регулярное выражение. Посмотрите, работает ли для вас последний. – Jerry

0

Не уверен, что вход/выход должны быть точно (см комментарий Рохит), но решение с участием String.replaceAll (требуется регулярное выражение String в качестве аргумента) может идти, как:

String input = "cats cat's cats' dawgs"; 
System.out.println(input.replaceAll("'s?\\W", " ")); 

Выход:

cats cat cats dawgs 
+0

Мне нужно удалить 's'. –

+0

@ that_me123 см. Мое редактирование. – Mena

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