2013-04-03 110 views
0

以下正則表達式需要獲取下面輸出的第二行,但是它的匹配位於第一行。如何跳過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 

回答

1

,因爲他們在正則表達式的特殊含義,您必須逃離|符號。有了這樣的表達你的第一線wouln't匹配:

(?P<status_code>[0-9]+)\|(?P<status_message>.+)\|(?P<gateway_message_id>[a-zA-Z0-9-]+) 

沒有逃脫這個符號您正在搜索[0-9]+.+[a-zA-Z0-9-]+。然後顯然.+匹配整個字符串。更多關於|你可以在this tutorial中閱讀。

+0

感謝您的迴應,但現在是否符合上述文字? – MarkO

+1

使用該正則表達式,您可以找到匹配序列,但它不會匹配上面提到的整個字符串。要匹配整個字符串,你應該用'。*?'加上它。我不知道你使用的是什麼語言 - 你也應該適當地使用正則表達式來處理新的行字符。 –