2010-07-22 121 views
1

一直試圖找出正則表達式中的「[」和「]」的轉義字符。我有串以下模式,該字符串是實際的字符串:正則表達式在C#問題

[somestring] [anotherstring]

因此字符串將啓動「[」之後somestring隨後用「]」,後通過「[」,後面跟着其他字符串,然後是「]」。

任何人都可以請建議?

+0

我在編寫正則表達式時發現了非常有用的免費Rad Software Regular Expression Designer。它包括一個內置的參考和檢查您的正則表達式的能力: http://www.radsoftware.com.au/regexdesigner/ – Alex 2010-07-22 05:29:12

+0

順便說一句,這將是有益的,如果你澄清是否你想要一個正則表達式來驗證/匹配字符串或提取/捕獲字符串中的兩個元素。 – Alex 2010-07-22 05:38:01

回答

2

如果是隻有1級,你想解析出字符串,那麼你不需要正則表達式:

string composition = "[somestring][anotherstring]"; 
string[] stringSeparators = new string[] {"][", "[", "]"}; 
string[] s = composition.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries); 

如果你想匹配的確切模式:

Regex r = new Regex(@"^(\[[^\[\]]+\]){2}$"); 

編輯 - 它有語法突出顯示的代碼的評論者回答: 對於解析出使用組串正則表達式的方式,你可以使用:

foreach (Match match in Regex.Matches(composition, @"\[([^\[\]]+)\]")) 
    Console.WriteLine(match.Groups[1].Value); 
+0

我如何提取「[]」中的字符串?所以它會拉出一些字符串和其他字符串。 – user384080 2010-07-22 05:32:46

+0

@ ronald-yoh:使用分組操作符。 – leppie 2010-07-22 05:50:43

+0

我是相當新的正則表達式..你可以請給我一個例子嗎? – user384080 2010-07-22 06:43:32

0

用'\'將[和]轉義出來。

"\[[A-Za-z]*\]\[[A-Za-z]*\]"

http://gskinner.com/RegExr/ 這個網站是真棒與正則表達式玩耍。

玩得開心!

+0

請注意,您需要使用'「\\」'或'@「\」'來避免字符串中的反斜槓(在正則表達式「看到」它之前)。 – Kobi 2010-07-22 05:15:19

2
@"(\[[^\]]+\]){2}" 

我想(我的頭現在有點疼)。

注意,這將匹配[]之間的任何內容。

+3

注意:如果字符串是[[s [omest [ring] [anothertring]],它也會匹配成功,你可能不想要。 – 2010-07-22 05:27:52

+0

@Jaroslav Jandek:非常好的點:) – leppie 2010-07-22 05:49:51