Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 匹配地址的正则表达式_C#_Regex - Fatal编程技术网

C# 匹配地址的正则表达式

C# 匹配地址的正则表达式,c#,regex,C#,Regex,我有以下一组要搜索的字符串: 1新墨西哥州阿尔伯克基市新墨西哥大学Dept Neurosci;2Mol。和 德克萨斯州休斯顿市贝勒医学院人类基因组;3精神科,大学。 产于得克萨斯州西南部。德克萨斯州达拉斯中心;4林。基因,伊拉斯谟 医科大学。荷兰鹿特丹中心;5人类遗传学,埃默里大学。, 佐治亚州亚特兰大 上面是一组地址,以数字开头(用于将其链接到此人)。需要搜索所有地址,如下所示: 1新墨西哥州阿尔伯克基市新墨西哥大学的Dept Neurosci,NM2Mol。 德克萨斯州休斯敦贝勒医学院人类遗

我有以下一组要搜索的字符串:

1新墨西哥州阿尔伯克基市新墨西哥大学Dept Neurosci;2Mol。和 德克萨斯州休斯顿市贝勒医学院人类基因组;3精神科,大学。 产于得克萨斯州西南部。德克萨斯州达拉斯中心;4林。基因,伊拉斯谟 医科大学。荷兰鹿特丹中心;5人类遗传学,埃默里大学。, 佐治亚州亚特兰大

上面是一组地址,以数字开头(用于将其链接到此人)。需要搜索所有地址,如下所示:

1新墨西哥州阿尔伯克基市新墨西哥大学的Dept Neurosci,NM
2Mol。 德克萨斯州休斯敦贝勒医学院人类遗传学, 德克萨斯大学西南医学院。德克萨斯州达拉斯市中心。Genet。, 伊拉斯穆苏尼夫。医学。中心,荷兰鹿特丹
5人类基因。, 佐治亚州亚特兰大埃默里大学

我已编写了以下正则表达式:

\d\w+,*
它只匹配后跟单词的数字。我如何修改它。请建议有没有更好的方法

如何使用(最后的数字)执行相同的操作:

*赵先生,郭先生,A.M.ALLAN1,R.ZONG2,L.ZHANG1,E.B.Johnson先生,G.SCHALLER1,A.C.MURTHY1,S.L.GOGGIN1,2,A.EISCH3,4,B.A。 OOSTRA4,5,D.L.Nelson 2,3,P.JIN5


根据需要使用一个简单的
regex
(以数字开头):

说明:

\d+                      digits (0-9) 
                         (1 or more times, matching the most amount possible)

[^\d]+                   any character except: digits (0-9) 
                         (1 or more times, matching the most amount possible)
和一个示例代码:

var strInput = "1Dept Neurosci, The Univ. of New Mexico, ALBUQUERQUE, NM; 2Mol. and Human Genet., Baylor Col. of Med., Houston,, TX; 3Psychiatry, Univ. of Texas Southwestern Med. Ctr., Dallas, TX; 4Clin. Genet., Erasmus Univ. Med. Ctr., Rotterdam, Netherlands; 5Human Genet., Emory Univ., Atlanta, GA";

var adresses = new List<string>();

foreach (Match match in Regex.Matches(strInput, @"\d+[^\d]+"))
{
    adresses.Add(match.Value);
}
var strInput=“1新泽西州阿尔伯克基市新墨西哥大学Dept Neurosci;2摩尔和人类基因,德克萨斯州休斯敦贝勒医学院;3德克萨斯州达拉斯市德克萨斯大学西南医学中心精神病学;4柏林基因,伊拉斯谟大学医学中心,荷兰鹿特丹;5人类基因,埃默里大学,佐治亚州亚特兰大”;
var address=新列表();
foreach(Regex.Matches中的Match(strInput,@“\d+[^\d]+”)
{
地址。添加(匹配。值);
}

根据需要创建一个简单的
正则表达式(以数字开头):

说明:

\d+                      digits (0-9) 
                         (1 or more times, matching the most amount possible)

[^\d]+                   any character except: digits (0-9) 
                         (1 or more times, matching the most amount possible)
和一个示例代码:

var strInput = "1Dept Neurosci, The Univ. of New Mexico, ALBUQUERQUE, NM; 2Mol. and Human Genet., Baylor Col. of Med., Houston,, TX; 3Psychiatry, Univ. of Texas Southwestern Med. Ctr., Dallas, TX; 4Clin. Genet., Erasmus Univ. Med. Ctr., Rotterdam, Netherlands; 5Human Genet., Emory Univ., Atlanta, GA";

var adresses = new List<string>();

foreach (Match match in Regex.Matches(strInput, @"\d+[^\d]+"))
{
    adresses.Add(match.Value);
}
var strInput=“1新泽西州阿尔伯克基市新墨西哥大学Dept Neurosci;2摩尔和人类基因,德克萨斯州休斯敦贝勒医学院;3德克萨斯州达拉斯市德克萨斯大学西南医学中心精神病学;4柏林基因,伊拉斯谟大学医学中心,荷兰鹿特丹;5人类基因,埃默里大学,佐治亚州亚特兰大”;
var address=新列表();
foreach(Regex.Matches中的Match(strInput,@“\d+[^\d]+”)
{
地址。添加(匹配。值);
}

搜索似乎很复杂。我从上述理解中了解到,将搜索字符串并返回结果

我是根据下面的字符串来做的

1新墨西哥州阿尔伯克基市新墨西哥大学深度神经科学

下面是代码片段

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="1Dept Neurosci, The Univ. of New Mexico, ALBUQUERQUE, NM ";

      string re1="(\\d+)";  // Integer Number 1
      string re2="((?:[a-z][a-z]+))";   // Word 1
      string re3=".*?"; // Non-greedy match on filler
      string re4="((?:[a-z][a-z]+))";   // Word 2
      string re5="(,)"; // Any Single Character 1
      string re6="(.*?),";  // Command Seperated Values 1

      Regex r = new Regex(re1+re2+re3+re4+re5+re6,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String int1=m.Groups[1].ToString();
            String word1=m.Groups[2].ToString();
            String word2=m.Groups[3].ToString();
            String c1=m.Groups[4].ToString();
            String csv1=m.Groups[5].ToString();
            Console.Write("("+int1.ToString()+")"+"("+word1.ToString()+")"+"("+word2.ToString()+")"+"("+c1.ToString()+")"+"("+csv1.ToString()+")"+"\n");
      }
      Console.ReadLine();
    }
  }
}
还有一件事。如果您需要生成正则表达式并搜索它,您可能需要签出

请让我知道这是否有帮助

编辑

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="X. ZHAO1,";

      string re1="((?:[a-z][a-z0-9_]*))";   // Variable Name 1
      string re2="(\\.)";   // Any Single Character 1
      string re3="(\\s+)";  // White Space 1
      string re4="((?:[a-z][a-z0-9_]*))";   // Variable Name 2
      string re5="(,)"; // Any Single Character 2

      Regex r = new Regex(re1+re2+re3+re4+re5,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String var1=m.Groups[1].ToString();
            String c1=m.Groups[2].ToString();
            String ws1=m.Groups[3].ToString();
            String var2=m.Groups[4].ToString();
            String c2=m.Groups[5].ToString();
            Console.Write("("+var1.ToString()+")"+"("+c1.ToString()+")"+"("+ws1.ToString()+")"+"("+var2.ToString()+")"+"("+c2.ToString()+")"+"\n");
      }
      Console.ReadLine();
    }
  }
}

搜索似乎很复杂。我从上述理解中了解到,将搜索字符串并返回结果

我是根据下面的字符串来做的

1新墨西哥州阿尔伯克基市新墨西哥大学深度神经科学

下面是代码片段

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="1Dept Neurosci, The Univ. of New Mexico, ALBUQUERQUE, NM ";

      string re1="(\\d+)";  // Integer Number 1
      string re2="((?:[a-z][a-z]+))";   // Word 1
      string re3=".*?"; // Non-greedy match on filler
      string re4="((?:[a-z][a-z]+))";   // Word 2
      string re5="(,)"; // Any Single Character 1
      string re6="(.*?),";  // Command Seperated Values 1

      Regex r = new Regex(re1+re2+re3+re4+re5+re6,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String int1=m.Groups[1].ToString();
            String word1=m.Groups[2].ToString();
            String word2=m.Groups[3].ToString();
            String c1=m.Groups[4].ToString();
            String csv1=m.Groups[5].ToString();
            Console.Write("("+int1.ToString()+")"+"("+word1.ToString()+")"+"("+word2.ToString()+")"+"("+c1.ToString()+")"+"("+csv1.ToString()+")"+"\n");
      }
      Console.ReadLine();
    }
  }
}
还有一件事。如果您需要生成正则表达式并搜索它,您可能需要签出

请让我知道这是否有帮助

编辑

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="X. ZHAO1,";

      string re1="((?:[a-z][a-z0-9_]*))";   // Variable Name 1
      string re2="(\\.)";   // Any Single Character 1
      string re3="(\\s+)";  // White Space 1
      string re4="((?:[a-z][a-z0-9_]*))";   // Variable Name 2
      string re5="(,)"; // Any Single Character 2

      Regex r = new Regex(re1+re2+re3+re4+re5,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String var1=m.Groups[1].ToString();
            String c1=m.Groups[2].ToString();
            String ws1=m.Groups[3].ToString();
            String var2=m.Groups[4].ToString();
            String c2=m.Groups[5].ToString();
            Console.Write("("+var1.ToString()+")"+"("+c1.ToString()+")"+"("+ws1.ToString()+")"+"("+var2.ToString()+")"+"("+c2.ToString()+")"+"\n");
      }
      Console.ReadLine();
    }
  }
}

您最好指定输入要求。所有地址都用分号分隔吗?如果是,任何地址都可以包含分号吗?依此类推。不一定是分号。需要搜索到下一个degit。@最后一个Burfi数字..无法理解你..给我们一些有效的例子。你最好指定输入要求。所有地址都用分号分隔吗?如果是,任何地址都可以包含分号吗?等等。不一定是分号。需要搜索到下一个degit。@最后一个Burfi数字..无法理解你..给我们一些有效的例子Hanks,我会尝试一下。你能回答我更新的问题吗?我尝试了更新的部分,它工作得很好,如何从结果中排除尾随(,)。如果要排除尾随,请删除“string re5=“(,)”;”和相应的re5用法。希望这有帮助……:)谢谢,我试试看。你能回答我更新的问题吗?我尝试了更新的部分,它工作得很好,如何从结果中排除尾随(,)。如果要排除尾随,请删除“string re5=“(,)”;”和相应的re5用法。希望这有帮助……:)