Шаблон Java Regex для сопоставления строки с апострофами

Мне нужно сопоставить шаблон, чтобы удалить 's, а также окончание ' из слов. Я использовал шаблон регулярного выражения:

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

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

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

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


person that_me123    schedule 27.09.2013    source источник
comment
Не очень понятно, чего вы на самом деле хотите. Можете ли вы опубликовать пример ввода и вывода?   -  person Rohit Jain    schedule 28.09.2013
comment
мне нужно удалить апостроф и 's' из строк, то есть как 's, так и s'. Также любое слово, оканчивающееся на '. Например, кошка должна быть кошкой, а кошка должна быть кошкой, а кошка должна быть кошкой.   -  person that_me123    schedule 28.09.2013
comment
На самом деле для шаблона (\\w+)('s$|s'$|'$) есть ли способ, которым я могу дать приоритеты 's$ s'$ '$, потому что в настоящее время кошки' рассматриваются как '$ дело а не с'$.   -  person that_me123    schedule 28.09.2013


Ответы (2)


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

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

Выход:

cats cat cats dawgs
person Mena    schedule 27.09.2013
comment
Мне также нужно удалить «s». - person that_me123; 28.09.2013

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

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

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

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

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

cats cat's cats'

Стали:

cat cat cat

РЕДАКТИРОВАТЬ: Поскольку вы хотите сохранить cat' как cat':

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

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

person Jerry    schedule 27.09.2013
comment
Мне также нужна кошка, чтобы оставаться кошкой. - person that_me123; 28.09.2013
comment
@that_me123 Обновлено регулярное выражение. Посмотрите, работает ли последний для вас. - person Jerry; 28.09.2013