一个命名为extension的字符串。matchResult.Result("${extension}"),返回匹配组extension的值

解决方案 »

  1.   

    1、那为何前面用符号 <> ,而后面用符号 ${} 呢?2、书上说 [a-zA-Z0-9]+\\. 是任意字母或数字后面紧跟符号.  ,那么为何用两个符号\\呢?3、把(?<extension>\\w+)")括起来是什么意思啊?为何这里也用两个符号\\ 啊?
      

  2.   

    (?<extension>\\w+)这个意思就是把(\\w+)匹配的值取个名字,你把<extension>换成
    <你喜欢的名字>都行啊,这里是扩展名。
    当然你也可以不取名字[a-zA-Z0-9]+\\.(\\w+),你取值得方式就不一样了。
      

  3.   

    \\代表"\"字符,因为"\"是转义字符,例如\s代表所有的空白字符、\[代表"["、\d代表数字,所以,"\"就必须用\\来表示。这里错了,实际上\\是C#里面字符串的转移字符,一个\\代表正则里面的一个\,而实际上\\\\才代表正则里面的\\即匹配"\"字符。
      

  4.   

    那么请问:
    \\和\不都是C#里面的东西吗?为何有的\\代表\,而这里的\\\\才代表一个\呢?
    另外,什么是字符串的转移字符啊?谢谢!
    按照书上说的:("[a-zA-Z0-9]+\\.(?<extension>\\w+)"),其实,aaa.exe是符合这个正则要求的,那这里为何用两个\\呢?
      

  5.   

    转义字符,这个你应该明白的啊。就是\,在正则表达式中\w匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]',而要使字符串中的\作为转义字符用先对其自己转一下。
    上面的的正则表达式实际上就是"[a-zA-Z0-9]+\.(\w+)",当然匹配aaa.exe的了
      

  6.   

    是这样的,正则表达式和C#都用"\"来做转义字符,所以,在C#里面'\\'是一个字符,就是'\',所以"[a-zA-Z0-9]+\\.(?<extension>\\w+)"实际上是[a-zA-Z0-9]+\.(\w+),而"\\\\"对应的正则表达式为\\,\\在正则中表示匹配"\"字符。。
    \\\\实在是太复杂了,如果我们想要匹配路径不就得"\\\\\w+\\\\"了吗?这样太吓人了,所以一般都会用前置"@"来命令C#不将"\"视为转义字符。这样,这个正则就可以这样写:@"[a-zA-Z0-9]+\.(\w+)"