2014-03-31 11 views
0
Owner 
         Owner: ABC 
        Address: XYZ    
    Information 

這是我試圖匹配的模式。我想匹配業主和信息,但不包括使用正則表達式,如標題的詳細信息,

(?<=(\s*Owner))(.|\n)*?(?=\s*Information) 

當我嘗試添加^$更準確,它不匹配。

(?<=(/^\s*Owner))(.|\n)*?(?=\s*Information/$) 

請問你能幫我嗎?

回答

4

你沒有給出足夠的細節。由於你的第一個表達式正在工作,我假設你正在使用Singleline模式。

我的下一個假設是,這個字符串只是一個較大字符串的一部分。

^被默認匹配串的開始

$被默認匹配串的末尾。現在

,因爲你的字符串包含的東西之前和未來,您需要更改此默認行爲:

通過修改Multiline^行的起點和$行的結尾匹配。有關更多詳細信息,請參見documentation

所以,你的正則表達式應該是這個樣子:

Regex regx = new Regex("(?<=^(\s*Owner))(.|\n)*?(?=\s*Information$)", RegexOptions.Singleline | RegexOptions.Multiline); 
+1

這個答案已經被添加到[堆棧溢出正則表達式常見問題解答(http://stackoverflow.com/a/22944075/2736496)在「錨」下。 – aliteralmind