C#中 reg.Match() 方法返回的值
              string oriArea = "四川大学中心222";
            Regex regex = new Regex("^(.*)[中心|会场]");
            System.Console.WriteLine(regex.Match(oriArea));
            System.Console.WriteLine(regex.Match(oriArea).Groups[1].Value);

1.我想获取的是oriArea中中心或者是会场之前的数据,但是regex.Match(oriArea)最后得到的是包括中心的,不是应该只是前面不包含中心或会场的元组的内容吗?
2.Groups[1].Value为什么是 四川大学中 呢?

6个回答

        string str = "四川大学中心asd";
        string put = str.IndexOf("中心")>=0 ? str.Remove(str.IndexOf("中心"), str.Length - str.IndexOf("中心")) : str.Remove(str.IndexOf("会场"), str.Length - str.IndexOf("会场"));

要匹配词组用使用(。。|。。。|。。)格式,而不是[]

 ^(.*)(中心|会场)
weixin_41947417
weixin_41947417 ^(.*)(中心|会场)
2 年多之前 回复
 "^(.*)[(中心)|(会场)]"  

中心和 会场 也要放在 组里,不然就解析为单个字符

^(.*)(中心|会场)

第一个问题:

 Regex regex = new Regex("^(.*)[中心|会场]"); 

这里面有[中心|会场]匹配出来的肯定是包括中心或会场的,你可以考虑去掉[中心|会场]试试

第二个问题:
你这个字符串加上匹配到的后面的数据,该从0开始

1.建议直接截取子字符串,用正则当然也行,但是效率会低一些

u013669614
CH3COOOH 抱歉手机上本来想点换行,点了个提交。2.非要用正则的话,group[0]表示匹配到的字符串,就是符合你给出的表达式的字符串,你给出的当然包括中心会场,group1234....才是分组里面的内容,0比较特殊
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐