2011-12-09 43 views
0

爲什麼這正則表達式匹配失敗:.NET使用正則表達式後面看看/超前

(?<="Title" = "8:)[^"]*(?=") 

這樣的:

"ARPHELPTELEPHONE" = "8:" 
"ARPHELPLINK" = "8:" 
"Title" = "8:something" 
"Subject" = "8:" 
"ARPCONTACT" = "8:something" 
"Keywords" = "8:" 

它從一個Visual Studio安裝項目摘錄。它的在線工具,我使用匹配,但它不使用Regex.Match()

下面的代碼匹配:

var productTitleRegex = @"(?<=""Title"" = ""8:)[^""]*(?="")"; 
var titleMatch = Regex.Match(content, productTitleRegex); 

titleMatch.Success如有虛假和值沒有返回

編輯:

也許我只是缺少東西時使用向前看,後面看.net正則表達式?因爲如果我刪除了這些查找表,它可以工作,但它匹配了我不想要的全部行。所以我使用週轉來匹配我想要的值。

在.net正則表達式中使用lookaround時,其他人都有過類似的體驗嗎?

+0

我在VS2008中測試了與C#相同的內容 – Riju

+0

對不起,我的不好。我一直在使用錯誤的輸入文件:/ – Mel

回答

1

我在VS2008中用C#測試了你的正則表達式模式,發現它與「something」的值匹配。看起來它工作正常。我也從http://www.radsoftware.com.au/regexdesigner/

enter image description here

免費下載的工具來測試它但是,如果你使用在這種情況下RegexOptions「IgnorePatternWhitespace」

var productTitleRegex = @"(?<=""Title"" = ""8:)[^""]*(?="")"; 
    var titleMatch = Regex.Match(content, productTitleRegex, RegexOptions.IgnorePatternWhitespace); 

正則表達式,你不會得到任何它不會工作匹配

相關問題