我正在寻找正则表达式模式,而不是 Java 代码,以匹配英语(或欧洲语言)句子中的最后一个单词。如果在这种情况下最后一个词是“hi”,那么我想匹配“hi”而不是“hi”。
正则表达式(\w+)\.$
将匹配“hi.”,而输出应该只是“hi”。什么是正确的正则表达式?
thufir@dur:~/NetBeansProjects/regex$
thufir@dur:~/NetBeansProjects/regex$ java -jar dist/regex.jar
trying
a b cd efg hi
matches:
hi
trying
a b cd efg hi.
matches:
thufir@dur:~/NetBeansProjects/regex$
代码:
package regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String matchesLastWordFine = "a b cd efg hi";
lastWord(matchesLastWordFine);
String noMatchFound = matchesLastWordFine + ".";
lastWord(noMatchFound);
}
private static void lastWord(String sentence) {
System.out.println("\n\ntrying\n" + sentence + "\nmatches:");
Pattern pattern = Pattern.compile("(\\w+)$");
Matcher matcher = pattern.matcher(sentence);
String match = null;
while (matcher.find()) {
match = matcher.group();
System.out.println(match);
}
}
}
我的代码是用 Java 编写的,但这既不是这里也不是那里。我正在严格寻找正则表达式,而不是 Java 代码。(是的,我知道用 Java 可以去掉最后一个字符。)
我应该在模式中放入什么正则表达式?