我正在尝试(未成功)使用 RegEx 提取一些信息,但我无法理解为什么某个特定元素未捕获到正确的组中。
这是表达式
^[\\* ](?'sname'[A-Z]+)/(?'fname'[A-Z]+) (\\*(?'chdinf'(INF|CHD)))? (?'random'.+?) (?'cpn'CPN[\\* ][1234])(?'status'.+?) (?'tktno'[0-9]+)$
这是一个示例输入
*SNAME/FNAME *INF CPN 2 XX XXXX 99999999999999
*INF 文本应该在 chdinf 组中捕获,但它不是,而是被 random 组捕获。
*INF 文本是可选信息,因此 lazy ? 在分组结构的末尾。
如果我将 random 构造更改为 (?'random' +?)(空格,而不是 '.'),则 Regex 将完全失败。
PS:我一直在使用http://regexstorm.net/tester作为测试平台。
请您参考如下方法:
您没有考虑前面的空格。试试这个:
^[\* ](?'sname'[A-Z]+)\/(?'fname'[A-Z]+) +(\*(?'chdinf'(INF|CHD)))? (?'random'.+?) (?'cpn'CPN[\* ][1234])(?'status'.+?) (?'tktno'[0-9]+)$
查看我之前添加的“+”。这是您需要的吗?
