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:棕色狐狸&跳过了

MatchCollection给出错误c#

$(.+?)+正则表达式是没有意义的,因为它匹配字符串的结束与$,然后1+字符除换行符,1次或更多次。这是一个不匹配任何文本的正则表达式的例子,与$a相同。

没有匹配,因此mc1为空,因此当您使用mc1[0]时抛出异常。

你的意思一定是

@"#([^+]+)'+"

参见regex演示。

细节

:

  • # -一个散列符号
  • ([^+]+) -第1组捕获除+以外的1个或多个字符
  • '+ -文字加号。
相关文章: