RegEx如何匹配数字后第二次出现的两位连续大写字母
正则实现方案
问题复盘
你需要从固定格式的实验名称字符串中提取指定子串,规则与测试用例如下:
- 测试样例:
SEF001DT45(目标值DT)、BV004MF(目标值MF) - 匹配目标:数字值之后第二次出现的两位连续大写字母
- 原有写法问题:
[A-Z]{2}会匹配字符串任意位置的连续两位大写字母,会误匹配前缀字母段的内容,无法精准定位目标。
可用正则表达式
^[A-Z]+\d+([A-Z]{2})
规则说明
^:锚定字符串起始位置,避免从字符串中间开始无效匹配[A-Z]+:匹配字符串开头的所有前缀大写字母,兼容2位、3位及以上长度的前缀\d+:匹配前缀后的连续数字段,自动跳过数字前的所有字母匹配项([A-Z]{2}):捕获数字段后紧跟的连续两位大写字母,该捕获组的内容就是你需要的目标子串,正好对应全局范围内第二次出现的连续两位大写字母。
使用注意
调用正则匹配方法后,直接取第一个捕获组的返回值即可,不同编程语言的取法略有差异:
- JavaScript:使用
String.prototype.match()匹配后,取返回数组下标为1的元素 - Python:使用
re.search()匹配后,调用match.group(1)获取结果
内容的提问来源于stack exchange,提问作者Ahmet Mera
相关产品推荐
相关产品推荐

