日期:2014-05-19  浏览次数:20955 次

问一个关于正则表达式匹配的问题
matchstr   =   "x(   y ";
MatchCollection   mc   =   Regex.Matches(targetstr,matchstr);

异常是:
System.ArgumentException   was   unhandled
    Message= "parsing   "x(   y "   -   Not   enough   ) 's. "
可是原来的字符串里就是半边括号,而且送入的是字符串,为什么会抛出异常呢?


------解决方案--------------------
匹配( 要转义 \(
------解决方案--------------------
\(
------解决方案--------------------
转义\(
------解决方案--------------------
看下MSDN
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxfund/html/f49cc9cc-db7d-4058-8b8a-422bc08b29b0.htm

不过这个也不全,有些特定场合,还是些字符是需要转义的
------解决方案--------------------
ExplicitCapture(显式捕获) 仅捕获已被显式命名的组。
这个参数跟转义没关系,这些需要转义的字符,你不转义,程序又如何知道哪些是要匹配字符本身的,哪些是用做特殊意义的,所以需要转义的,在匹配它本身时,一定要转义
------解决方案--------------------
不用转换就不是regex的语法了,你干脆使用string.indexof来查找得了。