我在C中使用正則表達式#我怎樣才能抓住字符|與正則表達式?
我需要解析一個字符串直到它匹配|
我都嘗試,但沒有奏效:
Regex reg = new Regex("Screen.*?|");
和
Regex reg = new Regex("Screen.[^|]*");
的代碼工作,但不匹配任何內容。
我該怎麼做?
我在C中使用正則表達式#我怎樣才能抓住字符|與正則表達式?
我需要解析一個字符串直到它匹配|
我都嘗試,但沒有奏效:
Regex reg = new Regex("Screen.*?|");
和
Regex reg = new Regex("Screen.[^|]*");
的代碼工作,但不匹配任何內容。
我該怎麼做?
|
是正則表達式中的特殊字符;你需要用反斜槓來轉義它。
Regex reg = new Regex(@"Screen.*?\|");
非常感謝!我試圖不使用@,並給了我錯誤:)現在你解決了我的問題了! – 2012-03-23 14:19:53
@ValNolav:是的,如果你這樣做,你需要在你的字符串文字中使用兩個反斜槓。 '\\ |'。 – Ryan 2012-03-23 14:25:44
在正則表達式中,|
是一個特殊字符,所以你需要進行轉義。試試這個:
Regex reg = new Regex(@"Screen.*?\|");
'\'是C#字符串中的轉義字符,您需要\\ |爲C#字符串轉義'\'或使用@「」字符串文字語法。 – Servy 2012-03-23 14:45:02
上nregex我認爲你需要使用
Regex reg = new Regex(@"Screen.*?\|");
或
Regex reg = new Regex(@"Screen.[^\|]*");
的|
是一個特殊字符測試後,其中:
原因正則表達式引擎匹配任一部分在左側,或 右側的部分。可串成一系列 選項。
與如果需要的字符匹配任何特殊字符(而不是把它作爲一個特殊字符)在正則表達式,那麼你需要逃避它:
\(反斜線),其次是任何[\^$。|?* +(){}
反斜槓轉義 特殊字符來壓制它們的特殊含義。
我想你應該'escape'管 – 2012-03-23 14:17:12
流通裝置\ |? – 2012-03-23 14:17:34
你可以首先在管道上分割字符串,然後解析分割嗎?我在想「var pieces = fullString.Split(new char [] {'|'})」。 – JeffFerguson 2012-03-23 14:37:25