2012-06-07 95 views
1

我希望正則表達式可以提取一個以「ERROR」開頭,但不包括文本「STA」的字符串。這個想法是僅向用戶顯示錯誤消息的文本字符串,而不是內部編程細節(例如代碼行號和過程名稱等)。從一個關鍵字提取連續子串到另一個關鍵字

例如,錯誤字符串的應用程序返回總是形式:

...STA-20010: ERROR my app error message is here STA-06512: at ... 

,我想提取此字符串如下:

ERROR my app error message is here 

有沒有辦法做到這使用正則表達式?如果它很重要,我會在actionscript3中實現它。

回答

4

以下應該做你想要什麼:

ERROR.*?(?=STA) 

.*?將盡可能少的字符可能使得lookahead(?=STA)成功匹配。

可能有必要添加單詞邊界,以及根據你的錯誤消息,例如:

ERROR.*?(?=\bSTA\b) 

像一個字符串的方式下,你將包括STACKOVERFLOW作爲錯誤消息的一部分,而不是停止,因爲它與STA開始:

...STA-20010: ERROR STACKOVERFLOW STA-06512: at ... 
+0

謝謝FJ,什麼定義了一個「單詞邊界」?例如,兩邊的字母a-z或A-Z是否定義了一個字邊界(但是數字或破折號等不)? – ggkmath

+1

單詞字符和非單詞字符之間的單詞邊界匹配,其中單詞字符被定義爲'[a-zA-Z0-9_]'(字母,數字或下劃線)。 '\ w'是該字符類的快捷方式。 –

相關問題