我正在寻找一个正则表达式来匹配像 N.A.S.A.这样的首字母缩略词,但也匹配没有终点的 N.A.S.A。 此解决方案正则表达式用于匹配首字母缩略词有效,但仅适用于以"." 结尾的首字母缩略词。
有什么想法可以匹配"N.A.S.A"和"N.A.S.A."吗?
b(?:[a-zA-Z].){2,}
解决方案在非捕获组中重复模式 2 次或更多次。您需要确保最后不需要.
:
b[a-zA-Z](?:.[a-zA-Z])+b
要匹配最后一个字母后面的.
,请添加.?
:
b[a-zA-Z](?:.[a-zA-Z])+b.?
查看正则表达式演示
注意:要仅匹配大写字母,请删除a-z
。
模式匹配
b
- 前导词边界[a-zA-Z]
- 1 个 ASCII 字母(?:.[a-zA-Z])+
- 1 个或更多(因此,至少需要 2 个字母(重复.
- 一个点[a-zA-Z]
- 1 个 ASCII 字母
b
- 尾随词边界.?
- 1 或 0.
字符。
PS:要启用任何 Unicode 字母支持,请将[a-zA-Z]
替换为p{L}
,[A-Z]
替换为p{Lu}
。
没关系;) 我是这样做的:b([a-z0-9].){1,}[a-z0-9]?b