2012-03-21 71 views
0

我必須爲我的小問題找到解決方案: - /。匹配可選字符串正則表達式

我有一個消息如

狀態:OK

狀態:ERR |下一條消息

是有可能創造一個正則表達式 「狀態」 +可選消息如果存在?

由於在第一組中有很多

勒內

+0

這是什麼表達?你想提取狀態碼嗎? – 2012-03-21 14:09:37

+0

是和可選消息 – Rene 2012-03-21 14:14:14

+0

你到目前爲止嘗試過什麼? http://regular-expressions.info是一個開始的好地方。 – 2012-03-21 14:23:27

回答

4

您可以使用這樣的事情:

/^Status:\s*([A-Z]+)(?:\|([^$]*))?$/ 

這所有的數據相匹配,並返回OK或ERR爲第一要素,只有將消息作爲第二個元素。

其他信息(?:表示法(在\ |之前)是一個「隱藏」分組。那就是組,但不要取。

+0

這個作品完美!非常感謝:-) – Rene 2012-03-21 14:28:29

+0

哇,一個非捕獲組內的捕獲組?尼斯:P – 2012-03-21 14:29:38

+0

謝謝。它可以是一個強大的工具:-) – mikaelb 2012-03-21 14:31:45

0
/Status: (\w+)(\|(.+))?/ 

這將捕獲的狀態碼(OK,ERR),和一個消息(如果存在於字符串)所述第三組中使用。

+0

幾乎完美:-) – Rene 2012-03-21 14:23:23

+0

但它是否可能沒有「|」 ? – Rene 2012-03-21 14:23:37

+0

正則表達式中的'\ |'用於匹配「|」將狀態代碼與消息中的消息分開。你的意思是這些字符串實際上不會包含「|」字符? – 2012-03-21 14:25:21