下面是各地机构代码BJS/SZA/BGS
BJS/SZA/ZZSYDW/BGS
BJS/AAA/SZB/BGS
BJS/HHH/ABC/SZB/ABC/BGS
CHINA/BJS//ABC/SZB/ABC/BGS
BJSDW/BJS/AAA/SZB/BGS
BJSDW/SWJG/BMGLJG
BJSDW/SWJG/YZFHSBGJG
BJSDW/SWJG/GKDWJQTGLJG
上面是组织机构的代码,
写一个正则,查询出所有符合的记录,顺序不能乱,可以越级查询查询BJS机构 下 SZ* 下 BG*  
BJS  SZ*  BG* 
 

解决方案 »

  1.   

      string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt",Encoding.GetEncoding("GB2312"));
                    string pattern = @"(?i).*?BJS/.*?SZ.*?BG.*";
                    foreach (Match m in Regex.Matches(tempStr, pattern))
                    {
                        //循环输出
                        string value = m.Value;
                        /* 匹配内容
                           BJS/SZA/BGS
                           BJS/SZA/ZZSYDW/BGS  
                           BJS/AAA/SZB/BGS
                           BJS/HHH/ABC/SZB/ABC/BGS
                           BJSDW/BJS/AAA/SZB/BGS
                     */
                    }
      

  2.   


      [ 问题补充 ]  
    比如,查询 BJS 机构 下 SZ* 下 BG*   
    BJS SZ* BG*  我想查询 北京市 下所有 SZ 开头的机构,下 所有 BG 开头的机构
      

  3.   

            static void GetDept(string input, string location, string departname)
            {
                Regex regex = new Regex("(?is)" + location + @"[^/]*(/\w+)*/" + departname + @"[^\s]*");
                MatchCollection collection = regex.Matches(input);
                foreach (Match m in collection)
                {
                    Console.WriteLine(m.Groups[0].Value);
                }
            }            string input = @"BJS/SZA/BGS
    BJS/SZA/ZZSYDW/BGS
    BJS/AAA/SZB/BGS
    BJS/HHH/ABC/SZB/ABC/BGS
    CHINA/BJS//ABC/SZB/ABC/BGS
    BJSDW/BJS/AAA/SZB/BGS
    BJSDW/SWJG/BMGLJG
    BJSDW/SWJG/YZFHSBGJG
    BJSDW/SWJG/GKDWJQTGLJG";            GetDept(input, "BJSD", "BG");
      

  4.   

    只能具体情况具体分析
     string pattern = @"(?i).*?BJS/+.*?SZ.*?BG.*";