2014-02-07 94 views
1

解決一個正則表達式會做一些我需要的工作有點困難。基本上,我公司通過與幾千行文本的文件解析,並用線在尋找什麼:在正則表達式中匹配Word,然後在PHP中使用正則表達式分隔符

考試:

匹配的文本將始終處於格式:

考試:(的TestString )額外的文本

所以我想要做的是在EXAM上匹配:,然後拉括號內的所有內容。

我現在的表情:

/^.+?\EXAM:(.+)$/is 

拉的一切考試之後公佈:,不會爲這個應用程序。

+0

你一次處理一行嗎?請一次顯示您的代碼 – Ibu

+0

伊布,一行。 如果: \t \t \t \t { \t \t \t \t \t $ EXAM_TYPE(的preg_match( 「/^.+ \ EXAM?。(+)$ /是」,$ thisline,$)匹配)=修剪($匹配[1]); \t \t \t \t} –

+0

'teststring'或'extra test'裏面是否可以有括號符號? – Robin

回答

1

您可以使用/EXAM:\s*\(([^)]+)\)/i

if(preg_match("/EXAM:\s*\(([^)]+)\)/i", $thisline, $matches)) { 
    $exam_type = trim($matches[1]); 
} 

[^)]將匹配任何東西,除了一個右括號,它會停在fi處遇到第一個)。您需要避免括號,因爲它們是特殊的正則表達式字符(它們用於捕獲變量)。在這裏例如你使用非轉義的存儲你想要的東西。
\s是任何類型的空白(空格,標籤...)的快捷方式。
您可能最後不需要s,因爲您要逐行解析doc:s標誌只會使.與其他所有內容的換行符匹配。