谁能帮我解释一下这个正则表达式的意义: @"#\?(?'property'\S+?)\?#",多谢啦,就要解释每个符号的作用?

解决方案 »

  1.   

    @--“@”符号
    符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的:
    string x="D:\\My Huang\\My Doc";
    string y = @"D:\My Huang\My Doc";
    事实上,如果按如下声明,C#将会报错,因为“\”在C#中用于实现转义,如“\n”换行:
    string x = "D:\My Huang\My Doc";"
    # -- 匹配一个#号
    \? -- 匹配一个问号
    (?'property'\S+?) --正则表达式引擎会记忆“()”中匹配到的内容,作为一个“组”,该组命名为'property'
                        \S匹配非空白字符,+?表示重复1次或更多次,但尽可能少重复。
    \? -- 匹配一个问号
    ## -- 匹配一个#号
    "用于匹配如:
                 Console.WriteLine(regex.IsMatch("#?abc#")); // false
                Console.WriteLine(regex.IsMatch("#?abc"));// false
                Console.WriteLine(regex.IsMatch("?abc#"));// false
                Console.WriteLine(regex.IsMatch("#?abc?#"));// true
                Console.WriteLine(regex.IsMatch("#?c?#"));// true
      

  2.   

    匹配用“#?”开头,用“?#”结尾的中间没有空白字符的字符串
    如 "#?HelloWorld?#"
    但是不匹配 "#?Hello World?#" 因为中间有空格 空格不属于\S这种情况  "#?Hello?#World?#" 正则会匹配  "#?Hello?#"  
    因为  \S+? 构成的正则是懒惰的 也就是和一楼所说的尽可能少匹配