我有以下数据:
HRB 760468:斯图加特CANNSITE GmbH,c / o Elvira Ehle博士,Rotdornweg 7,18119 Rostock。 GesellschaftmitbeschränkterHaftung。 Gesellschaftsvertrag vom 09.03.2017。
HRB 760481:Neckarsee 399. V V GmbH,Stuttgart,Kurt-Schumacher-Straße18-20,53113Bonn。 GesellschaftmitbeschränkterHaftung。 Gesellschaftsvertrag vom 22.03.2017。
我需要过滤掉:
HRB 760468:斯图加特CANNSITE GmbH,c / o Elvira Ehle博士,Rotdornweg 7,18119 Rostock
HRB 760481:Neckarsee 399. V V GmbH,Stuttgart,Kurt-Schumacher-Straße18-20,53113Bonn
我的RegEx是:@"HRB.\d+:[^.]+"
问题在于“Elvira博士”,因为它包含“。” - Regex将停在那里,而不是在“Gesellschaft mit”之前,我无法让它改变正则表达式,以便在这种情况下将它带到最后的“Rostock”/“Bonn”。
之后我尝试过滤掉“760468”,“CANNSITE GmbH”,“Stuttgart”,“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);
因为有太多不同类型的地址,所以经常会出现问题。
答案 0 :(得分:2)
好像你在城市名称之前有某种邮政编码。您可以将其用于正则表达式。
以下正则表达式可以从您的示例中提取第一部分。
Regex.Match(txt, @"(^HRB .*?\d{5}\s+\S+\.)")
编辑:
修改正则表达式也可以使用下面的文本
HRB 760467:APC One UG(haftungsbeschränkt),内卡河畔罗滕堡,Lilienthalweg 3,72108,内卡河畔罗滕堡。 GesellschaftmitbeschränkterHaftung。 Gesellschaftsvertrag vom 22.03.2017。 Geschäftsanschrift:Lilienthalweg 3,72108 Rottenburg am Neckar。 Gegenstand:Entwicklung,Entwicklungsberatung,Herstellung sowie Vertrieb von elektronischen Produkten。 Stammkapital:1.500,00 EUR。
Regex.Match(txt, @"(<br>HRB .*?\d{5}\s+[\w\-\s]+\.)")
答案 1 :(得分:1)
答案 2 :(得分:1)
也许RegEx不是正确的工具?在逗号上拆分并解析每个逗号分隔文本块。然后,也许,只是可能,您可以使用目标RegEx确定每个文本块中的内容,该目标RegEx可以告诉您该子字符串是否属于该类型。当多个模式匹配时仍然不知道如何处理。