代码之家  ›  专栏  ›  技术社区  ›  Roman

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

  •  0
  • Roman  · 技术社区  · 14 年前

    假设我们有

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

    如何使用java正则表达式实现这一点?

    我已经试过了:

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

    但结果是

    John<strong> Doe Jr</strong>
    

    <strong> ,主要问题是模式匹配最大的子序列,而我需要最小的子序列。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Vitalii Fedorenko    14 年前
    "John Doe Jr".replaceAll("(\\S+)$", "<strong>$1</strong>")
    

    \S 是非空白字符

        2
  •  2
  •   Ezku    14 年前

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

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

    与Marcelo Cantos的答案不同,这还有一个优点,即它不需要字符串中有任何空格。