Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式:以'结尾的单词;s';除了特定的词_Java_Regex_Replaceall - Fatal编程技术网

Java正则表达式:以'结尾的单词;s';除了特定的词

Java正则表达式:以'结尾的单词;s';除了特定的词,java,regex,replaceall,Java,Regex,Replaceall,我在找一个正则表达式。 我有这个: String regex_words_ended_s_in_singular_form = "\\b(anglais|francais)\\b"; 然后,我想删除除“anglais”和“francais”之外的所有单词末尾的“s” 我试过这个,但它当然不起作用: String temp = tweet.replaceAll( "(?!" + regex_words_ended_s_in_singular_form + ")" + "s\\b",""); w

我在找一个正则表达式。 我有这个:

String regex_words_ended_s_in_singular_form = "\\b(anglais|francais)\\b";
然后,我想删除除“anglais”和“francais”之外的所有单词末尾的“s”

我试过这个,但它当然不起作用:

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;

要匹配以
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
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)

你的评论听起来好像你只是想找到以“s”结尾的单词。如果是这样,您可以使用以下内容:

[\S]+(S\b)

那么你只需要一个正则表达式,它可以找到任何以
s
结尾的单词?你能提供一个输入输出示例吗?那么你只需要一个正则表达式,它可以找到任何以
s
结尾的单词吗?你能提供一个输入输出示例吗?我只想删除文本中每个单词末尾的“s”,但不适用于英语和法语。使用您的解决方案,我只是删除了单词,而不仅仅是“s”:/@GeoffreyGuettier已修复。@GeoffreyGuettier很高兴它对您有效。请考虑通过点击来接受答案。✓ 如果我的回答对你有帮助的话,请点击左边(请参见),然后向上投票(请参见)。非常感谢,它很有效!我有最后一个问题,我是否因为“|”而需要一个循环?“?:”是什么意思?很抱歉它不起作用,它删除了所有的单词而不是“s”:(可能是这样的:字符串res=s.replaceAll(\\b(?)(?:盎格鲁语|法语)\\b)(\\w*)s\\b“,“$1$2”)我只想删除一个文本的结尾处的“S”,而不是盎格鲁和弗朗西斯。当你的解决方案,我只是删除单词,而不仅仅是‘S’:/@ GeoffreyGuettier固定。@ GeFFFYGEYTITE很高兴为你工作。请考虑通过点击接受答案。✓ 如果我的答案对你有帮助,请点击左边(请参见)并向上投票(请参见)。非常感谢!我只有最后一个问题,我是否需要一个循环,因为“|”?这是什么意思?:“对不起,它不起作用,它会删除所有单词而不是“s”:(可能是这样的:String res=s.replaceAll(\\b(?)(?:anglais | francais)\\b)(\\w*)s\\b”,“$1$2”);让我试试……不,我不想这样。我想删除单词末尾的“s”,除了“anglais”和“francais”。不,我不想这样。我想删除单词末尾的“s”,除了“anglais”和“francais”。