[英]Replace last word in a string if it is 2 characters long using regex
我正在尝试使用正则表达式替换字符串的最后一个单词,如果它是2个字符长。 我使用了[a-zA-Z]{2}$
但它找到了字符串的最后2个字符。 如果长度不是2个字符,我不想替换最后一个字,我怎么能这样做?
您需要在两个字母前匹配单词边界( \\b
):
\b[a-zA-Z]{2}$
这将匹配出现在字符串末尾的任何两个拉丁字母,只要它们前面没有“单词”字符(拉丁字母,数字或下划线)。
如果您想要替换单词,即使它前面有数字或下划线,您可能希望使用lookbehind断言,如下所示:
(?<![a-zA-Z])[a-zA-Z]{2}$
\\\\b\\\\w\\\\w\\\\b$
(java风格的正则表达式)
也应该工作
编辑:事实上\\\\b\\\\w\\\\w$
应该足够了。 ( 或非\\b\\w\\w$
风格的\\b\\w\\w$
..请参阅演示链接 )
你也可以使用:
[^\p{Alpha}]\p{Alpha}{2}$
如果数字计为单词,请使用Alnum
。 但是,如果整个字符串只有两个字符长,则会失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.