正则表达式必须包含且可能仅包含

时间:2018-03-01 00:03:46

标签: python regex

我想要一个python的正则表达式,它匹配一个必须包含4位数的字符串,它可能不包含除&#34之外的任何特殊字符 - "或"。",它可能只包含大写字母。我知道以下匹配4位或更多的文本。我如何添加其余标准?

[0-9]{4,}

一个例子是: ART-4.5-11 好, ART5411 好, 76543 好,但 aRT-4!5-11 很糟糕,因为它包含一个小写的char和一个不是" - "的特殊字符。或"。"

1 个答案:

答案 0 :(得分:5)

模式:

pattern = '^[A-Z.-]*(\d[A-Z.-]*){4,}$'
  • ^ - 单词
  • 的开头
  • [A-Z.-]* - 任意数量的可选非数字"好字符":字母,句号或破折号
  • (\d[A-Z.-]*){4,} - 一个或多个数字组和其他"好字符&#34 ;;此部分提供至少4位数字
  • $ - 单词的结尾

示例:

re.match(pattern, "ART-4.5-11")
# <_sre.SRE_Match object; span=(0, 10), match='ART-4.5-11'>    
re.match(pattern, "ART5411")
# <_sre.SRE_Match object; span=(0, 7), match='ART5411'>
re.match(pattern, "aRT-4!5-11") # No match
re.match(pattern, "76543")
# <_sre.SRE_Match object; span=(0, 5), match='76543'>