以下正则表达式需要获得下面输出的第二行,但是它在第一行上匹配。如何跳过error code|error text|submission reference
并匹配0|sms submitted|eb725f96b4b094d5f8318741cc1a545f-2
表达
(?P<status_code>[0-9]+)|(?P<status_message>.+)|(?P<gateway_message_id>[a-zA-Z0-9-]+)
文字
error code|error text|submission reference
0|sms submitted|eb725f96b4b094d5f8318741cc1a545f-2
答案 0 :(得分:1)
您必须转义|
符号,因为它们在正则表达式中具有特殊含义。有了这样的表达,你的第一行就不会匹配:
(?P<status_code>[0-9]+)\|(?P<status_message>.+)\|(?P<gateway_message_id>[a-zA-Z0-9-]+)
在不转义该符号的情况下,您正在搜索[0-9]+
或 .+
或 [a-zA-Z0-9-]+
。然后显然.+
匹配整个字符串。有关|
的更多信息,请参阅this tutorial。