例如,我有以下数据:


  HRB 760468:CANNSITE GmbH,斯图加特,C / O Elvira Ehle博士,Rodornweg 7,18119罗斯托克。 Gesellschaft mitbeschränkterHaftung。 Gesellschaftsvertrag vom 09.03.2017。
  
  HRB 760481:Neckarsee399。VV GmbH,斯图加特,Kurt-Schumacher-Straße18-20,53113波恩。 Gesellschaft mitbeschränkterHaftung。 Gesellschaftsvertrag vom 22.03.2017。


我需要过滤掉:


  HRB 760468:CANNSITE GmbH,斯图加特,c / o Elvira Ehle博士,Rotdornweg 7,18119罗斯托克
  
  HRB 760481:Neckarsee399。VV GmbH,斯图加特,Kurt-Schumacher-Straße18-20,53113波恩


我的RegEx是:@"HRB.\d+:[^.]+"

因此问题在于“ Elvira博士”的情况,因为其中包含“”。 -正则表达式将在此停靠,而不是在“ Gesellschaft mit”之前,并且在这种情况下,我无法使其更改正则表达式以使其最终到达“ Rostock” /“ Bonn”。

之后,我尝试过滤掉“ 760468”,“ CANNSITE GmbH”,“斯图加特”,“ Rotdornweg 7”,“ 18119”
为此,我正在执行以下操作-也许您可以帮助我改善这一点(顺序类似于上面的数据):

     Regex regexNummer = new Regex(@"\d+:");
     Regex regexFirma = new Regex(@":[^,]+");
     Regex regexStadt = new Regex(@", \w+.\w+.\w+.\w+,");
     Regex regexAdresse = new Regex(@", \w+.+\d,");
     Regex regexPlz = new Regex(@", \d+[^ ]+");
     string nummer = regexNummer.Match(match.Value).ToString().Replace(":", "");
     string firma = regexFirma.Match(match.Value).ToString().Replace(": ", "");
     string plz = regexPlz.Match(match.Value).ToString().Replace(", ", "");
     string stadt = regexStadt.Match(match.Value).ToString().Replace(", ", "");
     stadt = stadt.Replace(",", "");

     string adresse = regexAdresse.Match(match.Value).ToString();
     adresse = adresse.Remove(adresse.Length - 1);
     adresse = adresse.Substring(adresse.LastIndexOf(", ") + 1);
     adresse = adresse.Substring(1);


由于有许多不同类型的地址,因此经常会破解。

最佳答案

似乎您在城市名称前有邮政编码。您可以将其用于正则表达式。

下面的Regex可以很好地从两个示例中提取第一部分。

Regex.Match(txt, @"(^HRB .*?\d{5}\s+\S+\.)")


编辑:

修改后的正则表达式也可以与以下文本一起使用


  HRB 760467:APC One UG(haftungsbeschränkt),内卡河畔罗滕堡,Lilienthalweg 3,内卡河畔罗滕堡72108。 Gesellschaft mitbeschränkterHaftung。 Gesellschaftsvertrag vom 22.03.2017。产地:Lilienthalweg 3,内卡河畔罗滕堡72108。 Gegenstand:Entwicklung,Entwicklungsberatung,Herstellung sowie Vertrieb von elektronischen产品。 Stammkapital:1.500,00 EUR。


Regex.Match(txt, @"(<br>HRB .*?\d{5}\s+[\w\-\s]+\.)")

关于c# - C#不能让RegEx在所有情况下都能正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43212111/

10-11 13:15