2010-07-22 76 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