正则表达式,提取括号内的内容
正则表达式,提取括号内的内容
举例:Reference_(A-第一组.ASM)
要得到:A-第一组.ASM
C#来编.
String s_reg= ; // 等号右边的就是我要的正则
Regex reg = new Regex(s_reg);
这个要看你用什么编程的啊preg_match_all("/\((.*)\)/s",$line,$match);这个是PHP 里的,提取() 的内容关键是特殊字符 ()要用 \ 来释义.\((.*)\) \( 和 \) 表示 (A-第一组.ASM) 两边的小括号,用\ 来释义了.中间的(....非常谢谢你,不过我是要用C# 在窗体里面编,C#正规表达式的话,应该是\((.*)\)这样写的吧String s_reg="\((.*)\)";String strA="Reference_(A-第一组.ASM)";Regex reg = new Regex( s_reg); MatchCollectionmatches=rege.Matches(strA);Console.WriteLine(" {0}",matches[1].value);也许是这样写吧不好意思,你这个匹配的结果是 (A-后台组.ASM)多了一对圆括号呢、哦,那个你得到的是一个数组来的,看matches 这个数组是如何位到里面的子数组的。因为C#这样获取的数组我不知道怎么定位matchesforeach(Match m in matches)//先从matches 数组中取出Match 类型的数组, 因为带有()。{foreach(string name in regex.GetGroupNames()){Console.WriteLine("capture group "{0}" value is:"{1}"" , name, m.Groups[name].Value);}} 从上面这个 m.Groups[name].Value 推测,可能 m.Groups[1].Value就可以得到了不过,这个m 是等于matches[0] 还是 matches[1]就不知道了^^matches[1].Groups[1].Value应该是等价于 matches[1,1].value 吧 你这样试试看,因为正规表达式的(.*)得到的内容是在这个数组里的,没有C#,不能测试出这个值在C#的数组中是如何定位的 你可以试下matches[1,1].value 不知道是不是这样写从0到1 试一下看从0,0 到 2,2 试试 ^^是match.Groups[1].Value, 非常感谢!~