繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM