简体   繁体   中英

How to match a string's end using a regex pattern in Java?

I want a regular expression pattern that will match with the end of a string.

I'm implementing a stemming algorithm that will remove suffixes of a word.

Eg for a word 'Developers' it should match 's'.
I can do it using following code :

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

I want a regular expression that will match only a string's end something like replaceLast() .

You need to match "s", but only if it is the last character in a word. This is achieved with the boundary assertion $:

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

If you enhance the regular expression, you can replace multiple suffixes with one call to replaceAll:

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

使用$

Pattern p = Pattern.compile("s$");
    public static void main(String[] args) 
{
    String message = "hi this message is a test message";
    message = message.replaceAll("message$", "email");
    System.out.println(message);
}

Check this, http://docs.oracle.com/javase/tutorial/essential/regex/bounds.html

看看下面的例子:

String ss = "Developers".replaceAll(".$", " ");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM