首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

正则表达式难道是这样工作的?该怎么解决

2012-02-01 
正则表达式难道是这样工作的?RegexrnewRegex(@ @(? x [0-9a-zA-Z]*) ,RegexOptions.IgnoreCase|Regex

正则表达式难道是这样工作的?
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+ "
用在程序中的效果是一样的,你设断点看一下就知道了

热点排行