日期:2014-05-17  浏览次数:21039 次

c#使用正则,表达式是或关系,怎么获取起作用的匹配项?
c#使用正则,表达式是或关系,怎么获取起作用的匹配项?

示例 :
string str="测试数-据文本";
Match m = Regex.Match(str,"中[\s\S]*国|数[\s\S]*据|测[\s\S]*试");
if (m.Success){
//这里匹配成功,如何返回第一个起作用的项(不是匹配值),数[\s\S]*据
}

------解决方案--------------------
你把正则表达式拆开,放在3个if里,把目标分别和拆开后的正则匹配,如果比配成功,返回改正则表达式
------解决方案--------------------
C# code
 string str = "测试数-据文本";
                MatchCollection mc = Regex.Matches(str, @"中[\s\S]*国|数[\s\S]*据|测[\s\S]*试");
                Match m1 = mc[0];//根据索引找到匹配项目
                string result = m1.Value;//测试

------解决方案--------------------
capture?
------解决方案--------------------
string str = "测试数-据文本";
string m = Regex.Match(str, @"中[\s\S]+国|数[\s\S]+据|测[\s\S]+试").Value;

------解决方案--------------------
好像很难的样子。
------解决方案--------------------
你可以把正则 拆开,放进数组或集合中 然后循环遍历匹配 到 就返回表达式并跳出循环