如果使用正则表达式使用2个字符长,则替换字符串中的最后一个单词

时间:2014-02-26 20:43:46

标签: java regex word-boundary

我正在尝试使用正则表达式替换长度为2个字符的字符串的最后一个单词。我使用了[a-zA-Z]{2}$但它找到了字符串的最后2个字符。如果长度不是2个字符,我不想替换最后一个字,我怎么能这样做?

3 个答案:

答案 0 :(得分:6)

您需要在两个字母之前匹配单词边界(\b):

\b[a-zA-Z]{2}$

这将匹配出现在字符串末尾的任何两个拉丁字母,只要它们前面没有“单词”字符(拉丁字母,数字或下划线)。

如果您想要替换单词,即使它前面有数字或下划线,您可能需要使用lookbehind断言,如下所示:

(?<![a-zA-Z])[a-zA-Z]{2}$

答案 1 :(得分:3)

\\b\\w\\w\\b$(java风格的正则表达式)

也应该有用

编辑:实际上\\b\\w\\w$就足够了。 (or \b\w\w$ in non-java flavor.. see demo link

答案 2 :(得分:0)

你也可以使用:

[^\p{Alpha}]\p{Alpha}{2}$

如果数字计为单词,请使用Alnum。但是,如果整个字符串只有两个字符长,则会失败。