C#正则表达式帮助,如何匹配这种模式

时间:2011-11-10 14:15:02

标签: regex

我有一个类似“[aaa] [vad] [adf]”的字符串,我想使用正则表达式来捕获[]中的数据,而[]中的字符可以是字符和数字,没有长度限制。我是正则表达的诺布,任何人都可以帮助我吗? 感谢。

5 个答案:

答案 0 :(得分:1)

这个正则表达式可能适合你:

\[(\w+)\]

如果您char引用word character

,那就是

答案 1 :(得分:1)

您可以尝试这样的事情:

var data = "[asd][dfhg][asfsa243]";

var re = new Regex(@"\[([^\]]*)\]");

var matches = re.Matches(data);

for (int i = 0; i < matches.Count; i++ )
{
    var m = matches[i];
    Console.WriteLine(m.Groups[1]);
}

Console.ReadLine();

输出:

asd
dfhg
asfsa243

正则表达式\[([^\]]*)\]匹配零个或多个不是]字符且出现在一对方括号([和{{1}之间的字符。 })

答案 2 :(得分:0)

这是我的建议:

\[(\w+)\]

角色将在比赛的第一组中提供,如下所示:

var regex = new Regex(@"\[([\w\d]*)\]");
MatchCollection matchCollection = regex.Matches(stringToTest);
foreach (Match match in matchCollection)
{
    Debug.Print(match.Groups[0].Value);
}

答案 3 :(得分:0)

以下是构建正则表达式的一些很好的资源 http://www.regexlib.com http://regexpal.com/

以下是字母数字的正则表达式:

 ^[a-zA-Z0-9]+$

以下是如何确保有3:

 /^([a-zA-Z0-9]){3}$/

答案 4 :(得分:-1)

你可以试试 -

[^\[\]\W]+

var matches = System.Text.RegularExpressions.Regex.Matches("[aaa][vad][adf]",@"[^\[\]\W]+").Cast<Match>().Select(m => m.Value);

应该忽略任何'[',']'和非单词字符,并从示例字符串返回'aaa','vad'和'adf'。