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

正则表达式难道是这样工作的?
Regex   r   =   new   Regex(@ "@(? <x> [0-9a-zA-Z]*) ",   RegexOptions.IgnoreCase|RegexOptions.Compiled);
执行过后,r的结果是r   =   {@(? <x> [0-9a-zA-Z]*)},初始化的时候明明是(@ "@(? <x> [0-9a-zA-Z]*) ",   里面有两个@@,为什么结果就变成了{@(? <x> [0-9a-zA-Z]*)},里面变成了一个@?那位大侠帮忙看看,很困惑。



------解决方案--------------------
首先你要明白@ "@(? <x> [0-9a-zA-Z]*) " 中这两个@的区别
第一个@表示后面的按字符串处理,不进行转义,就不用再加\号了
第二个@才是正则表达式的内容,在这里就是普通的文本字符“@”

在你这个正则中看得不明显,举个例子吧
@ "\d+@\w+\.\w+ "
"\\d+@\\w+\\.\\w+ "
用在程序中的效果是一样的,你设断点看一下就知道了