如何匹配句子中的最后一个单词?

时间:2010-07-21 12:21:35

标签: java regex

假设我们有一个一个句子(在最后一个之后没有一个点的几个单词)。

我需要用一些html标签包装最后一个单词(例如,<strong>lastword</strong>)。

如何使用java正则表达式实现此目的?

我已经尝试过了:

"John Doe Jr".replaceAll ("( .+$)", "<strong>$1</strong>");

但结果是

John<strong> Doe Jr</strong>

P.S。如果我们在<strong>之后有一个空格,那就没关系,主要的问题是模式匹配最大的子序列,而我需要最小的子序列。

2 个答案:

答案 0 :(得分:2)

最后一个字是结尾或字符串之前的非空格字符。您可以使用[]定义一组字符,并使用^来取消它,如[^ a-z]中所示,以匹配除a-z之外的所有字符。

"John Doe Jr".replaceAll("([^ ]+)$", "<strong>$1</strong>");

这也有一个优点,就是不要求字符串中有任何空格,这与Marcelo Cantos的回答不同。

答案 1 :(得分:2)

"John Doe Jr".replaceAll("(\\S+)$", "<strong>$1</strong>")

\S是一个非空白字符