Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# Regexs拆分地址并返回特定部分_C#_Regex - Fatal编程技术网

C# Regexs拆分地址并返回特定部分

C# Regexs拆分地址并返回特定部分,c#,regex,C#,Regex,我在寻找C#的正则表达式,将地址分解为特定的部分,并返回这些部分,根据模式进行拆分 单位编号可以定义为数字和单个字母的任意组合,或数字、空格和单个字母的任意组合 i、 e.2a、328b、32C均为单元编号 如果我有地址——例如 我想要正则表达式,它允许我返回单元号最后一个实例的所有内容 第32单元a 或之后的所有内容,但不包括单元号的最后一个实例 约翰逊维尔史密斯新月酒店 另一个(不现实的)例子: 我希望能够获得以下任何一项: unit 32a Smith 3 d 或 i、 e.我想匹配以下

我在寻找C#的正则表达式,将地址分解为特定的部分,并返回这些部分,根据模式进行拆分

单位编号可以定义为数字和单个字母的任意组合,或数字、空格和单个字母的任意组合

i、 e.2a、328b、32C均为单元编号

如果我有地址——例如

我想要正则表达式,它允许我返回单元号最后一个实例的所有内容

第32单元a

或之后的所有内容,但不包括单元号的最后一个实例

约翰逊维尔史密斯新月酒店

另一个(不现实的)例子:

我希望能够获得以下任何一项:

unit 32a Smith 3 d

i、 e.我想匹配以下最后一个实例:

 "[0-9][a-z] " or "[0-9] [a-z] "
我试过:

var beforePattern = "^.*[0-9][a-z] ";
            var beforepatternSpace = "^.*[0-9] [a-z] ";
            var afterPattern = "[0-9][a-z] (.*)";
            var afterPatternSpace = "[0-9] [a-z] (.*)";
但是,after模式包括匹配字符串。此外,我不确定如何确定应该使用哪个赛前/赛后(除了说最长的“before”或最短的“after”必须有效)

我会在C中使用这个#

第一组和第二组现在有你想要的

在两个样本上都进行了测试。如果某些情况不是预期的,请提供更多示例

一些C#代码

var regex=new regex((?*\d+\s?\w+\s)(?*);
var match=regex.match(输入);
var beforeString=match[“在”]之前。值;
var-afterString=match[“在”]之后。值;

由于regex将尽可能匹配,这将找到您要查找的内容

,希望您在加拿大埃德蒙顿没有任何地址。所有的街道名称都是数字。因此,某人的地址可能看起来像123 121 St.W.这可能是一个很难用正则表达式解决的问题,因为有许多不同的地址书写方式,没有人遵循任何标准。
Crescent, Johnsonville
 "[0-9][a-z] " or "[0-9] [a-z] "
var beforePattern = "^.*[0-9][a-z] ";
            var beforepatternSpace = "^.*[0-9] [a-z] ";
            var afterPattern = "[0-9][a-z] (.*)";
            var afterPatternSpace = "[0-9] [a-z] (.*)";
(.*\d\s*[a-z])\s*(.*)
var match = Regex.Match("unit 32a Smith 3 d Crescent, Johnsonville", @"(.*\d\s*[a-z])\s*(.*)");

var part1 = match.Groups[1].Value;
var part2 = match.Groups[2].Value;
var regex = new Regex( "(?<before>.*\d+\s?\w+\s)(?<after>.*)" );

var match = regex.Match( input );

var beforeString = match["before"].Value;
var afterString = match["after"].Value;