正则表达式帮助样本模式。 C#

时间:2009-03-23 15:00:23

标签: c# regex

我决定使用正则表达式,现在我有两个问题:)

给定输入字符串“hello world [2] [200] [%8] [%1c] [%d]”,

匹配“[%8]”“[%1c]”+“[%d]”的实例的approprite模式是什么? (所以百分号,后跟任何长度的字母数字,都用方括号括起来。)

对于“[2]”和[200],我已经使用了

Regex.Matches(input, "(\\[)[0-9]*?\\]");

哪种方法正常。

任何帮助都会被贬低。

4 个答案:

答案 0 :(得分:2)

MatchCollection matches = null;
try {
    Regex regexObj = new Regex(@"\[[%\w]+\]");
    matches = regexObj.Matches(input);
    if (matches.Count > 0) {
        // Access individual matches using matches.Item[]
    } else {
        // Match attempt failed
    } 
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

答案 1 :(得分:1)

试试这个:

Regex.Matches(input, "\\[%[0-9a-f]+\\]");

或者作为一个组合的正则表达式:

Regex.Matches(input, "\\[(\\d+|%[0-9a-f]+)\\]");

答案 2 :(得分:1)

正则表达式需要匹配字符串中“[%anyLengthAlphaNumeric]”的这种模式是“[(%\ w +)]”

前导“[”使用“\”进行转义,然后使用(...)创建一组字符。此分组定义为%\ w +。 \ w是所有单词字符的快捷方式,包括字母和数字,没有空格。 +匹配前一个符号,字符或组的一个或多个实例。然后使用“\”转义尾随“]”并捕获结束括号。

这是一个基本的代码示例:

string input = @"hello world [2] [200] [%8] [%1c] [%d]";
Regex example = new Regex(@"\[(%\w+)\]");
MatchCollection matches = example.Matches(input);

答案 3 :(得分:0)

@"\[%[0-9a-f]*?\]"怎么样?

string input = "hello world [2] [200] [%8] [%1c] [%d]";
MatchCollection matches = Regex.Matches(input, @"\[%[0-9a-f]*?\]");
matches.Count // = 3