我正在处理一个字符串,并希望在C#中使用MatchCollection和Regex捕获两个字符之间的两个子字符串。它给出了一些逻辑错误"指定的参数超出了有效值的范围。参数名称:i" 测试字符串:"一个快速的#brown fox&跳过+懒狗&#34 ;;
b2 = "A quick #brown fox& jumps over+ the lazy dog";
Regex r = new Regex(@"#(.+?)&");
MatchCollection mc = r.Matches(b2);
string match1 = (mc[0].Groups[1].Value);
Regex r1= new Regex(@"$(.+?)+");
MatchCollection mc1 = r1.Matches(b2); //giving error at this line
string match2 = (mc1[0].Groups[1].Value);
MessageBox.Show("Match1: " + match1 + "... Match2: " + match2);
我想要打印:Match1:棕色狐狸...... Match2:棕色狐狸&跳过
答案 0 :(得分:1)
$(.+?)+
正则表达式毫无意义,因为它匹配字符串的结尾与$
,然后匹配换行符以外的1 +字符,1次或更多次。这是与任何文本都不匹配的正则表达式的示例,与$a
相同。
没有匹配项,因此mc1
为空,因此当您使用mc1[0]
时会抛出异常。
你一定意味着
@"#([^+]+)\+"
请参阅regex demo。
详细:
#
- 哈希符号([^+]+)
- 第1组捕获+
\+
- 文字加号。