例如,我有以下数据:
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/