匹配所有具有特定长度的单词

时间:2019-07-08 17:08:07

标签: python regex

我想制作一个正则表达式,使其匹配具有特定长度的所有单词。
我有字符串的示例: “我ABCDE FGH IG KLMNOPQ RS T”
我想匹配所有长度小于3个字母的单词(在这种情况下为IIGRST)。
这是我做过的选择:
Alt1:
正则表达式: ( |^)([A-Z]{1,2})( |$)Link1
说明:匹配任何长度为2或1个大写字母的单词,这些单词的前面有一个空格或字符串的开头(( |^)),然后是一个空格或结尾(( |$)的字符串。

问题是我得到不需要的空格的正匹配。而且我找不到T的匹配项。
Alt2:
正则表达式: \w{1,2}\bLink2
说明:

  

最多匹配2个字符的单词,只要它是字符串的唯一内容
  (我在此answer中找到了它)

问题是我从每个单词(DEGHPQ)中获得最后两个字母的匹配,这对我来说是错误的。

2 个答案:

答案 0 :(得分:2)

如果必须考虑空格,则可以匹配1或2个大写数字,并使用环顾四周来断言直接在左边和右边的不是非whitspace char \S

如果大写字符被例如$AB#包围,则它们将不匹配。

(?<!\S)[A-Z]{1,2}(?!\S)

Regex demo

答案 1 :(得分:1)

您接近了!只需在前面添加一个\b边界:

\b\w{1,2}\b

比赛:

I ABCDE FGH IG KLMNOPQ RS T
~           ~~         ~~ ~