我正在尝试使用正则表达式替换字符串的最后一个单词,如果它是 2 个字符长。我使用过[a-zA-Z]{2}$
,但它正在查找字符串的最后 2 个字符。如果最后一个单词不完全是 2 个字符,我不想替换它,我该怎么做?
问问题
515 次
3 回答
6
您需要\b
在两个字母之前匹配一个单词边界 ( ):
\b[a-zA-Z]{2}$
这将匹配出现在字符串末尾的任何两个拉丁字母,只要它们前面没有“单词”字符(拉丁字母、数字或下划线)。
如果您想替换单词,即使它前面有一个数字或下划线,您可能需要使用后向断言,如下所示:
(?<![a-zA-Z])[a-zA-Z]{2}$
于 2014-02-26T20:45:36.267 回答
3
于 2014-02-26T20:46:04.993 回答
0
您还可以使用:
[^\p{Alpha}]\p{Alpha}{2}$
Alnum
如果数字算作单词,请改用。但是,如果整个字符串只有两个字符长,这确实会失败。
于 2014-02-26T21:00:48.757 回答