正则表达式匹配含可选分组的字符串问题求助
正则匹配解决方案
问题根源
你当前的正则存在两个问题:
- 新增的非捕获分组是强制匹配的,导致只能匹配包含Hoover片段的第二类字符串
- 正则中的
\[B]多了不必要的转义符号,属于语法错误
修正后的正则表达式
(\w{3}\d{2})\s+(?:hoover\s+\d{4}\s+RGX\s+)?(B\d{3})\s+(\w{3})\s+(\d{4})\s+(\d{4})
关键调整说明
- 在非捕获分组末尾添加
?,将其标记为可选匹配(允许出现0次或1次),这样既兼容无Hoover片段的第一类字符串,也支持有该片段的第二类字符串 - 把
\[B]简化为B\d{3},直接匹配以B开头的三位数字串,符合你的匹配需求
该正则会同时匹配两类目标字符串,且捕获的分组完全符合你需要的Sat28 B158 RGX 1100 1200对应内容。
内容的提问来源于stack exchange,提问作者leap
相关产品推荐
相关产品推荐

