下面的正则表达式完美运行
[\s\S]*[0RECALL]?[\s\S]\d(?P<fpName>[R|U|J|L|I|N]\d\d\d\d),(?P<fpReceivedTimestamp>\d\d\/\d\d\/\d\d,\d\d\d\d)Z,[^,]*,(?P<basic_weight>\d\d\d\d\d\d)\/(?P<payload>\d\d\d\d\d[\d]?),
对于
0RECALL,J2516\n1J2516,04/20/16,1336Z,N103XA /CL30 ,123456/123456,
但我需要一个正则表达式,其中 最后的数字是可选的 123456/123456 或 ------/------
所以文本可以是
0RECALL,J2516\n1J2516,04/20/16,1336Z,N103XA /CL30 ,123456/123456,
or
0RECALL,J2516\n1J2516,04/20/16,1336Z,N103XA /CL30 ,------/------,
我应该对正则表达式做哪些更改。目前我正在使用下面的在线工具寻求帮助
请您参考如下方法:
| (管道)用于 OR。
我还将一些\d\d\d\d\d\d 替换为 [\d]{6}
[\s\S]*[0RECALL]?[\s\S]\d(?P<fpName>[R|U|J|L|I|N]\d\d\d\d),(?P<fpReceivedTimestamp>\d\d\/\d\d\/\d\d,\d\d\d\d)Z,[^,]*,(?P<basic_weight>(\d\d\d\d\d\d)|[-]{6})\/(?P<payload>([\d]{5,6})|[-]{5,6}),
编辑:
- 你可以做 (?P(foo)|(bar)) 来匹配名称中的 foo 或 bar
- 您可以使用 [\d]{n,m} 来匹配一个 n 到 m 位的数字(m 是可选的)
