正则表达式需求:匹配含-A/-D/-P及数字的FIX格式字符串
正则表达式匹配规则修复方案
你的正则表达式存在两个关键问题,导致所有测试用例匹配失败:
- 分组逻辑错误:原正则
\[FIX-A[0-9]+|-D[0-9]+|-P[0-9]+\]会被拆分为三个独立分支,分别匹配[FIX-A数字]、-D数字]、-P数字],完全不符合规则要求的[FIX-xxx-xxx...]结构。 - 未处理重复的
-A/-D/-P+数字模块,无法匹配多次重复的场景。
正确的正则表达式
/\[FIX(?:-[ADP]\d+)+\] [A-Z0-9 _]+ : .+/g
正则结构解释
\[FIX:匹配开头的固定字符[FIX(?:-[ADP]\d+)+:非捕获分组,用于匹配至少一次重复的-A/-D/-P加数字的模块:-[ADP]:匹配分隔符-后跟大写的A、D、P其中一个字符\d+:匹配一个或多个数字- 外层的
+:表示整个模块可以重复多次,满足规则中“可重复多次”的要求
\]:匹配闭合的方括号][A-Z0-9 _]+:匹配方括号后的大写字符串(支持数字、下划线、空格): .+:匹配固定分隔符:后跟任意长度的字符串
测试用例验证
- 匹配成功的用例:
[FIX-A2569] TOTO : toto[FIX-D256458-P4565] TOTO : toto[FIX-D123123-A123123-A123123-P123123] TOTO : toto[FIX-D123123-A123123-P123123] TOTO : toto
- 匹配失败的用例:
[FIX-D123123-A123123A123123-P123123] TOTO : toto(缺少-分隔符)[FIX-D123123A123123A123123P123123] TOTO : toto(所有-分隔符缺失)[FIX-D123123-A123123A123123P123123] TOTO : toto(部分-分隔符缺失)
内容的提问来源于stack exchange,提问作者tonymx227
相关产品推荐
相关产品推荐

