检查表达式是否与正则表达式匹配

时间:2021-02-28 11:18:32

标签: python regex

我想验证以下表达式:

  1. “CODE1:123/CODE2:3467/CODE1:7686”
  2. “CODE1:9090”
  3. “CODE2:078/CODE1:7788/CODE1:333”
  4. “CODE2:77”

就我而言,模式 'CODE1:xx' 或 'CODE2:xx' 以任何不同的顺序给出。 我可以对模式进行排序,使它们像“CODE1:XX/CODE1:YY/CODE2:ZZ” 并检查是否匹配

<块引用>

r'[CODE1:\d+]*[CODE2:\d+]*'

我们能否缩短它:是否可以用一个正则表达式匹配器来解决这个问题? 谢谢

2 个答案:

答案 0 :(得分:1)

此正则表达式将为所有 4 种情况提供匹配:
CODE[12]:\d+(?:/CODE[12]:\d+)*

请看这里:https://regex101.com/r/wn30a5/1

它将匹配 CODE 后跟 12,然后是带有数字的冒号 :;并可选择后跟斜杠 / 和该模式,次数不限。因此,不允许使用尾随斜杠,它也可以显示为单个代码;并且以任何顺序;所以不需要先排序。

答案 1 :(得分:0)

CODE 是静态的,但在它之后数字是动态的,为了使它更短,只需使用 CODE\d:\d+

如果您只想匹配 : 后的两位数字,请使用 CODE\d:\d{2}