读书人

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

发布时间: 2012-02-14 19:19:19 作者: rapoo

求正则表达式
@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) "

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

读书人网 >C#

热点推荐