2012-03-23 48 views
0

我在C中使用正則表達式#我怎樣才能抓住字符|與正則表達式?

我需要解析一個字符串直到它匹配|

我都嘗試,但沒有奏效:

Regex reg = new Regex("Screen.*?|"); 

Regex reg = new Regex("Screen.[^|]*"); 

的代碼工作,但不匹配任何內容。

我該怎麼做?

+0

我想你應該'escape'管 – 2012-03-23 14:17:12

+0

流通裝置\ |? – 2012-03-23 14:17:34

+0

你可以首先在管道上分割字符串,然後解析分割嗎?我在想「var pieces = fullString.Split(new char [] {'|'})」。 – JeffFerguson 2012-03-23 14:37:25

回答

3

|是正則表達式中的特殊字符;你需要用反斜槓來轉義它。

Regex reg = new Regex(@"Screen.*?\|"); 
+0

非常感謝!我試圖不使用@,並給了我錯誤:)現在你解決了我的問題了! – 2012-03-23 14:19:53

+0

@ValNolav:是的,如果你這樣做,你需要在你的字符串文字中使用兩個反斜槓。 '\\ |'。 – Ryan 2012-03-23 14:25:44

-1

在正則表達式中,|是一個特殊字符,所以你需要進行轉義。試試這個:

Regex reg = new Regex(@"Screen.*?\|"); 
+0

'\'是C#字符串中的轉義字符,您需要\\ |爲C#字符串轉義'\'或使用@「」字符串文字語法。 – Servy 2012-03-23 14:45:02

1

上nregex我認爲你需要使用

Regex reg = new Regex(@"Screen.*?\|"); 

Regex reg = new Regex(@"Screen.[^\|]*"); 

|是一個特殊字符測試後,其中:

原因正則表達式引擎匹配任一部分在左側,或 右側的部分。可串成一系列 選項。

與如果需要的字符匹配任何特殊字符(而不是把它作爲一個特殊字符)在正則表達式,那麼你需要逃避它:

\(反斜線),其次是任何[\^$。|?* +(){}
反斜槓轉義 特殊字符來壓制它們的特殊含義。

A review of the basic syntax in regex

相關問題