C# 要匹配地址和可选后缀的正则表达式

C# 要匹配地址和可选后缀的正则表达式,c#,.net,regex,C#,.net,Regex,我有两种格式的地址: SomeHouse, Holbrook, Belper, Derbyshire, DE56 0RR 及 该数字仅出现在右端,始终在括号中,并且始终为12位数字 我正在尝试让正则表达式匹配两个组。。。地址和号码(如果有) 这是一个令人头痛的问题(对于我没有经验的自己来说),因为我无法让我的表达同时适用于这两种类型的称呼 我有 (?<address>.*)(?<bracketsandnum>\((?<num>[0-9]{12})\))$

我有两种格式的地址:

SomeHouse,
Holbrook,
Belper,
Derbyshire,
DE56 0RR

该数字仅出现在右端,始终在括号中,并且始终为12位数字

我正在尝试让正则表达式匹配两个组。。。地址和号码(如果有)

这是一个令人头痛的问题(对于我没有经验的自己来说),因为我无法让我的表达同时适用于这两种类型的称呼

我有

(?<address>.*)(?<bracketsandnum>\((?<num>[0-9]{12})\))$

(?

使用
将第二组设置为可选,并在第一组中使用非贪婪匹配(通过使用
修改
*
)。类似于以下内容:

^(?<address>.*?)(?:\((?<num>\d{12})\))?$
^(?.*?(:\(?\d{12})\)$

@Martinho,Qtax,我可以正式将'something'升级为'exactly-like'!非常感谢。请您解释一下?:bit的意思吗?@user:它是一个非捕获组。这意味着它捕获的部分在
匹配中不会有
组。
。我想@Qtax假设您不在乎abo捕获括号,只捕获数字。如果您确实需要它们,请继续创建一个命名组,就像您在原始正则表达式中所做的那样。@Martinho,再次感谢您。我现在真的理解了这个小家伙。Qtax是对的,那些括号是不需要的。
^(?<address>.*?)(?:\((?<num>\d{12})\))?$