我决定使用正则表达式,现在我有两个问题:)
给定输入字符串“hello world [2] [200] [%8] [%1c] [%d]”,
匹配“[%8]”“[%1c]”+“[%d]”的实例的approprite模式是什么? (所以百分号,后跟任何长度的字母数字,都用方括号括起来。)
对于“[2]”和[200],我已经使用了
Regex.Matches(input, "(\\[)[0-9]*?\\]");
哪种方法正常。
任何帮助都会被贬低。
答案 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