MatchCollection给出错误c#
本文关键字:错误 出错 MatchCollection | 更新日期: 2023-09-27 18:07:00
我正在处理一个字符串,并希望在c#中使用MatchCollection和Regex捕获两个字符之间的两个子字符串。它给出一些逻辑错误"指定的参数超出了有效值的范围。参数名称:i"测试字符串:"A quick #brown fox&跳过"懒狗";
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: brown fox…配对2:棕色狐狸&跳过了
$(.+?)+
正则表达式是没有意义的,因为它匹配字符串的结束与$
,然后1+字符除换行符,1次或更多次。这是一个不匹配任何文本的正则表达式的例子,与$a
相同。
没有匹配,因此mc1
为空,因此当您使用mc1[0]
时抛出异常。
你的意思一定是
@"#([^+]+)'+"
参见regex演示。
细节:
-
#
-一个散列符号 -
([^+]+)
-第1组捕获除+
以外的1个或多个字符 -
'+
-文字加号。