地址上的C#RegEx无法正常工作

时间:2017-04-10 16:26:10

标签: c# regex

所以我需要一个字符串的地址,但我有不同的情况,所以我涵盖了很多,但现在我无法解决这个问题:

原始字符串:

  


HRB 145942:playloop UG(haftungsbeschränkt),汉堡,EimsbüttelerChaussee57,c / o Jan Sorgenfrei ,20259汉堡。 Gesellschaft mit beschr

     


HRB 145941:TBE-Ehrbare Rebellen GmbH,Hamburg, Friedrich-Ebert-Damm 111 ,22047 Hamburg。 Gesellschaft mit beschr

     


HRB 145923:Lionheart Asset Management GmbH,München, Trenknerweg 100 A,c / oBartholdBrümmer,22605 Hamburg。 Gesellschaft mit beschr

     


HRB 716239:CarstanCode Germany GmbH,Konstanz, Byk-Gulden-Straße2,GebäudeF21,78467 Konstanz。 Gesellschaft mit beschr

所以我需要“EimsbüttelerChaussee57,c / o Jan Sorgenfrei ”和“ Friedrich-Ebert-Damm 111 ”和“ Trenknerweg 100 A,c / oBartholdBrümmer“和” Byk-Gulden-Straße2,GebäudeF21

即使只是没有c / o的地址也会对我有所帮助 我的RegEx是:, \d{5}.+\.

我的问题是,它获得了像“弗里德里希......”这样的普通地址,但是在“c / o”地址中,它只是像“c / o Jan Sorgenfrei”那样,并且之前错过了字符串或它只是“ GebäudeF21“。

从RegEx获取字符串后,我执行以下操作来过滤掉一些内容:

stadt = stadt.Substring(0, stadt.LastIndexOf('.'));
stadt = new string(stadt.Where(c => c != '-' && (c < '0' || c > '9')).ToArray());
stadt = stadt.Substring(1);

1 个答案:

答案 0 :(得分:1)

如果格式始终保持不变,那么可能不需要ReGex。 请注意,这也将占据城市部分:

        var addressList = new[]
        {
            "HRB 145942: playloop UG (haftungsbeschränkt), Hamburg, Eimsbütteler Chaussee 57, c/o Jan Sorgenfrei, 20259 Hamburg. Gesellschaft mit beschr",
            "HRB 145941: TBE - Ehrbare Rebellen GmbH, Hamburg, Friedrich-Ebert - Damm 111, 22047 Hamburg.Gesellschaft mit beschr",
            "HRB 145923: Lionheart Asset Management GmbH, München, Trenknerweg 100 A, c / o Barthold Brümmer, 22605 Hamburg.Gesellschaft mit beschr",
            "HRB 716239: CarboCode Germany GmbH, Konstanz, Byk - Gulden - Straße 2, Gebäude F21, 78467 Konstanz.Gesellschaft mit beschr"
        };

        var addresses = addressList.Select(
            s =>
            {
                var secondIndexOfComma = s.IndexOf(',', s.IndexOf(',') + 1);
                return s.Substring(secondIndexOfComma + 2, s.LastIndexOf('.') - secondIndexOfComma - 2);
            });

        foreach (var address in addresses)
        {
            Console.WriteLine(address);
        }

输出:

Eimsbütteler Chaussee 57, c/o Jan Sorgenfrei, 20259 Hamburg
Friedrich-Ebert - Damm 111, 22047 Hamburg
Trenknerweg 100 A, c / o Barthold Brümmer, 22605 Hamburg
Byk - Gulden - Straße 2, Gebäude F21, 78467 Konstanz