none
请教一个正则写法 RRS feed

  • 问题

  •  参与单位名称及人员姓名
      安信公司  孙珊;上海沣杨公司  周修启;
    上海凯石益正资管  陈晨;华宸未来基金  张静;
    南京鼎汉投资  张帆;国金证券  沈伟杰;禾其投资  王祥麒

     时间
     2015年5月20日下午2:30

    我想匹配出所有 公司 人名,例如   安信公司  孙珊;上海沣杨公司  周修启....

    怎么做?string partern = @"参与单位名称及人员姓名(\s)*?(\S)+?(\s);";

    这样貌似只能匹配出一条数据?

    谢谢!

     
    2015年5月25日 14:42

答案

  • 那我建议你一行一行进行匹配,如果这段文字是在文本文件中的,那么通过StreamReader.ReadLine等方法来逐行读取,读取出来之后通过分号进行判断是否应该匹配该行,如果包含分号那么直接通过分号分隔就可以了,或者也可以再通过正则来匹配分号之间的内容。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月28日 3:33
    版主

全部回复

  • string partern = @"参与单位名称及人员姓名(\s)*?(\S)+?(\s);";

    因为你需要把后面的复数化才能得到多个结果,改写成如下结果

    参与单位名称及人员姓名((\s)*?(\S)+?(\s);)*

    2015年5月26日 5:46
  • 你好:

    请参考下面的代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string input = @" 参与单位名称及人员姓名
     安信公司  孙珊;上海沣杨公司  周修启;
     上海凯石益正资管  陈晨;华宸未来基金  张静;
     南京鼎汉投资  张帆;国金证券  沈伟杰;禾其投资  王祥麒;";
                string pattern = @"(\S+)\s+(\S+);";
    
                Regex regex = new Regex(pattern);
                MatchCollection mc = regex.Matches(input);
                foreach (Match m in mc)
                {
                    Console.WriteLine(string.Format("公司:{0} 姓名:{1}",m.Groups[1].Value,m.Groups[2].Value));
                }
    
                Console.Read();
            }
        }
    }


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月26日 9:05
    版主
  • @"(?s)参与单位名称及人员姓名(.*)时间"; 这样匹配出中间那段:

    安信公司  孙珊;上海沣杨公司  周修启;
    上海凯石益正资管  陈晨;华宸未来基金  张静;
    南京鼎汉投资  张帆;国金证券  沈伟杰;禾其投资  王祥麒

    然后再解析,楼上那种不行啊,有什么改善方法没?

    2015年5月26日 9:32
  • 楼上那种不行啊,有什么改善方法没?

    你的运行结果是什么?


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月26日 9:49
    版主
  • 看到了,可以出来但是会把后面包括;的也计算进来,

    如果需要以 时间 这个单词为结尾的怎么做?

     参与单位名称及人员姓名
      安信证券  孙珊;上海沣杨资管  周修启;
    上海凯石益正资管  陈晨;华宸未来基金  张静;
    南京鼎汉投资  张帆;国金证券  沈伟杰;禾其投资  王祥麒
     
     时间
     2015年5月20日.......

    这样省略号后的就不需要,摘取 时间 之前

    2015年5月27日 14:08
  • 那我建议你一行一行进行匹配,如果这段文字是在文本文件中的,那么通过StreamReader.ReadLine等方法来逐行读取,读取出来之后通过分号进行判断是否应该匹配该行,如果包含分号那么直接通过分号分隔就可以了,或者也可以再通过正则来匹配分号之间的内容。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月28日 3:33
    版主