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

求正则表达式,该怎么解决

2012-02-14 
求正则表达式@str1SELECT(intpr1,userinfo,strpr1str1)用MatchmRegex.Match(sourceStr,@ (\s*)@(\S*?)

求正则表达式
@str1   =   SELECT(intpr1,userinfo,strpr1=str1)

Match   m   =   Regex.Match(sourceStr,   @ "(\s*)@(\S*?)[^=]=[^=](.*?) ");
匹配
需要得到的字符串分别为
group[1]= "   "
group[2]= "str1   "
group[3]= "   SELECT(intpr1,userinfo,strpr1=str1) "

但上面的正则表达式的错误结果是
group[1]= "   "
group[2]= "str1   "
group[3]= " "

求正解


[解决办法]
按我的理解楼主的group[1]= " "应该是@str1前面有空格是吧
而你要得到的结果
group[2]= "str1 "
group[3]= " SELECT(intpr1,userinfo,strpr1=str1) "
里还保留了空格是吧,按你写的Group,可以用下面的正则
Match m = Regex.Match(yourStr, @ "(\s*)@(.*?)=(.*) ");
m.Groups[1].Value; // " "
m.Groups[2].Value; // "str1 "
m.Groups[3].Value; // " SELECT(intpr1,userinfo,strpr1=str1) "

楼主的正则把最后的“?”去掉,也可以得到相应的结果,但是[^=]是要匹配一个字符的,如果=与其它字符串之间没有空格,楼主的表达式得到的结果仍然是错的,所以不推荐那样写

热点排行