首页 > 解决方案 > 如何编写匹配多种模式中的任何一种的正则表达式?

问题描述

是否可以为一组匹配模式 1 或模式 2 的字符串构建正则表达式,其中两个模式具有相同数量的捕获组?

我需要通过对捕获组数组进行索引来检索字符串段,而与知道字符串是否匹配模式 1 或 2 无关。

pattern 1 
I545XY
([I])(\d{3})()([A-Z]{2})

pattern 2 
O5480000031000ZZ
([O])(\d{3})(\d{10})([A-Z]{2})

所以每个模式有4组。第 1、2、4 组是相同的。模式 1 中缺少组 3。

我想在整个组索引(1,2,3,4)中索引任何结果(无论是模式 1 还是模式 2)。

标签: regexregex-group

解决方案


使用此正则表达式,所有组都存在并最终为空:

^([IO])(\d{3})((?:\d{10})?)([A-Z]{2})$

演示


推荐阅读