14

我想要一个与字符串结尾匹配的正则表达式模式。

我正在实现一个词干算法,它将删除一个单词的后缀。

例如,对于单词“Developers”,它应该匹配“s”。
我可以使用以下代码来做到这一点:

Pattern  p = Pattern.compile("s");
Matcher m = p.matcher("Developers");
m.replaceAll(" "); // it will replace all 's' with ' '

我想要一个仅匹配字符串结尾的正则表达式,例如replaceLast().

4

4 回答 4

21

您需要匹配“s”,但前提是它是单词中的最后一个字符。这是通过边界断言 $ 实现的:

input.replaceAll("s$", " ");

如果您增强正则表达式,您可以通过一次调用 replaceAll 来替换多个后缀:

input.replaceAll("(ed|s)$", " ");
于 2013-01-16T09:12:21.120 回答
3

使用$

Pattern p = Pattern.compile("s$");
于 2013-01-16T09:14:21.553 回答
1
    public static void main(String[] args) 
{
    String message = "hi this message is a test message";
    message = message.replaceAll("message$", "email");
    System.out.println(message);
}

检查这个, http://docs.oracle.com/javase/tutorial/essential/regex/bounds.html

于 2013-01-16T09:14:43.010 回答
-1

看看下面的例子:

String ss = "Developers".replaceAll(".$", " ");
于 2013-01-16T09:13:45.033 回答