我想制作一个正则表达式,使其匹配具有特定长度的所有单词。
我有字符串的示例:
“我ABCDE FGH IG KLMNOPQ RS T”
我想匹配所有长度小于3个字母的单词(在这种情况下为I
,IG
,RS
和T
)。
这是我做过的选择:
Alt1:
正则表达式: ( |^)([A-Z]{1,2})( |$)
:Link1
说明:匹配任何长度为2或1个大写字母的单词,这些单词的前面有一个空格或字符串的开头(( |^)
),然后是一个空格或结尾(( |$)
的字符串。
问题是我得到不需要的空格的正匹配。而且我找不到T
的匹配项。
Alt2:
正则表达式: \w{1,2}\b
:Link2
说明:
最多匹配2个字符的单词,只要它是字符串的唯一内容
(我在此answer中找到了它)
问题是我从每个单词(DE
,GH
和PQ
)中获得最后两个字母的匹配,这对我来说是错误的。
答案 0 :(得分:2)
如果必须考虑空格,则可以匹配1或2个大写数字,并使用环顾四周来断言直接在左边和右边的不是非whitspace char \S
如果大写字符被例如$AB#
包围,则它们将不匹配。
(?<!\S)[A-Z]{1,2}(?!\S)
答案 1 :(得分:1)
您接近了!只需在前面添加一个\b
边界:
\b\w{1,2}\b
比赛:
I ABCDE FGH IG KLMNOPQ RS T
~ ~~ ~~ ~