正则表达式,提取括号内的内容

问题描述:

正则表达式,提取括号内的内容
举例:Reference_(A-第一组.ASM)
要得到:A-第一组.ASM
C#来编.
String s_reg= ; // 等号右边的就是我要的正则
Regex reg = new Regex(s_reg);
1个回答 分类:综合 2014-10-23

问题解答:

我来补答
这个要看你用什么编程的啊
preg_match_all("/\((.*)\)/s",$line,$match);
这个是PHP 里的,提取() 的内容关键是特殊字符 ()要用 \ 来释义.
\((.*)\) \( 和 \) 表示 (A-第一组.ASM) 两边的小括号,用\ 来释义了.中间的(.*) 就是表示提取的部分,也就是 "A-第一组.ASM" 这些在()中间的字符.至于要不要加界定符 / 就看你用的编程语言了
再问: 非常谢谢你,不过我是要用C# 在窗体里面编,
再答: C#正规表达式的话,应该是\((.*)\) 这样写的吧 String s_reg="\((.*)\)"; String strA="Reference_(A-第一组.ASM)"; Regex reg = new Regex( s_reg); MatchCollection matches=rege.Matches(strA); Console.WriteLine(" {0}",matches[1].value); 也许是这样写吧
再问: 不好意思,你这个匹配的结果是 (A-后台组.ASM) 多了一对圆括号呢、
再答: 哦,那个你得到的是一个数组来的,看matches 这个数组是如何位到里面的子数组的。 因为C#这样获取的数组我不知道怎么定位 matches foreach(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, 非常感谢!~
 
 
展开全文阅读
剩余:2000
上一页:合外力做功,