Java Regex: слово, заканчивающееся на 's', за исключением определенных слов
Я пытаюсь найти регулярное выражение. У меня есть это:
String regex_words_ended_s_in_singular_form = "\\b(anglais|francais)\\b";
Затем я хочу удалить "s" в конце всех слов, кроме "anglais" и "francais".
Я попробовал это, но это не работает, конечно:
String temp = tweet.replaceAll( "(?!" + regex_words_ended_s_in_singular_form + ")" + "s\\b","");
while (!temp.equals(tweet)) {
tweet = temp;
temp = tweet.replaceAll( "(?!" + regex_words_ended_s_in_singular_form + ")" + "s\\b","");
}
tweet = temp;
2 ответа
Соответствовать любому слову, оканчивающемуся на s
но anglais
а также francais
вы можете использовать
\b(?!(?:anglais|francais)\b)(\w*)s\b
Посмотреть демо-версию регулярного выражения
подробности
\b
- ведущая граница слова(?!(?:anglais|francais)\b)
- негативный взгляд, который не соответствует, если есть целое словоanglais
или жеfrancais
сразу справа от текущего местоположения(\w*)
- Группа 1: ноль или более символов словаs
- анs
\b
- конечная граница слова.
В Java:
String res = s.replaceAll("\\b(?!(?:anglais|francais)\\b)(\\w*)s\\b", "$1");
Ваш комментарий звучит так, как будто вы просто хотите найти слова, заканчивающиеся на 's'. Если это так, вы можете использовать что-то вроде этого:
[\S]+(s\b)
ссылка на регулярное выражение