3

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

4

3 回答 3

6

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

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

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

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

(?<![a-zA-Z])[a-zA-Z]{2}$
于 2014-02-26T20:45:36.267 回答
3

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

应该也可以

编辑:实际上\\b\\w\\w$应该足够了。(或非\b\w\w$java风格..见演示链接

于 2014-02-26T20:46:04.993 回答
0

您还可以使用:

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

Alnum如果数字算作单词,请改用。但是,如果整个字符串只有两个字符长,这确实会失败。

于 2014-02-26T21:00:48.757 回答