假设我们有一个一个句子(在最后一个之后没有一个点的几个单词)。
我需要用一些html标签包装最后一个单词(例如,<strong>lastword</strong>
)。
如何使用java正则表达式实现此目的?
我已经尝试过了:
"John Doe Jr".replaceAll ("( .+$)", "<strong>$1</strong>");
但结果是
John<strong> Doe Jr</strong>
P.S。如果我们在<strong>
之后有一个空格,那就没关系,主要的问题是模式匹配最大的子序列,而我需要最小的子序列。
答案 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是一个非空白字符