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

Pra*_*eth 3 java regex word-boundary

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

p.s*_*w.g 6

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

\b[a-zA-Z]{2}$
Run Code Online (Sandbox Code Playgroud)

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

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

(?<![a-zA-Z])[a-zA-Z]{2}$
Run Code Online (Sandbox Code Playgroud)