日期:2014-05-20  浏览次数:20805 次

求解正则表达式
原字符串@“SELECT(S1,TABLE,S1= "CC ")”
我要分解字符串为
str1= "S1 ";
str2= "TABLE "
str3=@ "S1= "CC " "

我用以下方法
Match   m   =   Regex.Match( "SELECT(S1,TABLE,S1= "CC ") ",@ "SELECT((.*?),(.*?),(.*?)) ");
if   (m.Success)
{
    str1   =   m.Groups[1].ToString()
    str2   =   m.Groups[2].ToString()
    str3   =   m.Groups[3].ToString()
}

始终得不到正确的结果,反复改变Group的标号也不行。请熟悉正则表达式的指导一下,谢谢




------解决方案--------------------
Match m = Regex.Match( "SELECT(S1,TABLE,S1=\ "CC\ ") ", @ "SELECT\((.*?),(.*?),(.*?)\) ");
if (m.Success)
{
string str1 = m.Groups[1].ToString();
string str2 = m.Groups[2].ToString();
string str3 = m.Groups[3].ToString();
Debug.WriteLine(str1 + "\t " + str2 + "\t " + str3);
}

输出如下:
S1 TABLE S1= "CC "
------解决方案--------------------
来晚了,楼主得不到正确结果的原因在于,没有把“()”进行转义。
在正则表达式中,( ) 标记一个子表达式的开始和结束位置。
(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
要匹配小括号,请使用 "\( " 和 "\) "

------解决方案--------------------
"( ", ") ", " " "d都应该转义,它们在Regex里是关键词