2017-10-28 79 views
-2

我有一個正則表達式字符串:C#正則表達式不匹配我的字符串

string regex = 
       "\"\\d*\",\"(?<url>\\w|\\d|[().,-–_'])\".*"; 

和一個字符串我想匹配它:

string line = 
    "\"4\",\"1800_in_sports\",\"24987709\",\"\",\"1906\",\"20171028152258\""; 

當我試圖讓URL類別,甚至檢查匹配,不匹配:

var result = Regex.Match(line, regex); 
string output = result.Groups["url"].Value; 

,如果我嘗試Regex.IsMatch(..)也返回false。 我用http://regexstorm.net/tester來測試這個和它在那裏工作,但是,當我運行的代碼。

在RegexStorm我所用的模式:

"\d{1,3}","(?<url>\w|\d|\n|[().,-–_'])+?" 
+1

請使用[逐字符串](https://stackoverflow.com/questions/3311988/)並告訴我們您在RegexStorm中使用的表達式。 –

+0

好吧,我沒有意識到您可以在逐字串中使用雙引號,我會嘗試。謝謝。 我也編輯了這個問題,以包含我在RegexStorm中使用的模式。 –

回答

0

正如Dour High Arch所提到的,應該使用逐字字符串。在雙引號前添加雙引號允許逐字字符串。

更改字符串的正則表達式:

string regex = 
       @"""\d{1,3}"",""(?<url>\w|\d|\n|[().,-–_''])+?"""; 

現在返回匹配。

0

替換\\ d只用\ d和\\ W只\ W上。

+0

由於「無法識別的轉義序列」,這將無法編譯。如果我將$添加到字符串的開頭,我不能添加\「。 –

+0

\ d表示匹配一個數字,\\ d表示匹配」\ d「,您希望前者不是後者 –

+0

當使用Regex讀取字符串它看到「\ d」而不是「\\ d」。例如, string regex =「\」\\ d * \「」;會起作用。 –

相關問題