正则表达式匹配排除末尾四位CRC、回车换行及指定后缀需求咨询
正则表达式实现方案
1. 匹配/FCOATC,前缀内容
适用规则
固定匹配/FCOATC,前缀,逗号后仅允许取值为01、02、03、1、2、3,自动排除后续4位CRC校验值、回车换行符、以及/开头的其他业务段。
正则表达式
\/FCOATC,(?:0[123]|[123])(?=[\/\r\n]|\d{4})
匹配逻辑说明
- 前缀
\/FCOATC,精确匹配目标段开头 - 非捕获组
(?:0[123]|[123])仅匹配允许的1位或2位合法值,不会多匹配后续CRC位 - 正向预查
(?=[\/\r\n]|\d{4})限定匹配终止位置:后续紧跟业务段分隔符/、换行符,或是4位CRC值,不会越界匹配冗余内容
2. 截取/FMH前缀业务段
适用规则
固定匹配/FMH前缀,后跟1-7位字母数字字符,匹配逗号后接7位符合[.0-9A-Z-]规则的字符,之后可选择性匹配,+6位任意字符,还可再选择性匹配,+6位数字,自动排除后续/开头业务段、回车换行前的4位CRC校验值。
正则表达式
\/FMH[A-Za-z0-9]{1,7},[.0-9A-Z-]{7}(?:,.{6})?(?:,\d{6})?(?=[\/\r\n]|\d{4}(?:\r?\n|$))
匹配逻辑说明
- 前缀
\/FMH精确匹配目标段开头 [A-Za-z0-9]{1,7}匹配要求的1-7位字母数字字符,[.0-9A-Z-]{7}匹配逗号加7位指定规则字符(?:,.{6})?为可选非捕获组,匹配,+6位任意字符的可选结构(?:,\d{6})?为可选非捕获组,匹配,+6位数字的可选结构- 末尾正向预查
(?=[\/\r\n]|\d{4}(?:\r?\n|$))限定匹配终止位置:后续紧跟业务段分隔符/、换行符,或是4位CRC校验值,不会携带多余后缀内容
内容的提问来源于stack exchange,提问作者Christine
相关产品推荐
相关产品推荐

