正则表达式匹配地址和可选后缀

时间:2011-07-12 11:08:13

标签: c# .net regex

我有两种格式的地址:

SomeHouse,
Holbrook,
Belper,
Derbyshire,
DE56 0RR

SomeHouse,
Holbrook,
Belper,
Derbyshire,
DE56 0RR(123123123123)

这个数字只出现在最后,总是在括号中,总是12位数。

我正在尝试使用正则表达式来匹配两个组...地址和数字(如果它在那里)。

这是一个头脑(因为我的经验不足的自我),因为我无法让我的表达能够处理这两种类型的地址。

我有

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

也使用一个组来匹配括号 - 不太确定我需要那个位:)当然不是作为一个命名组。

请指教!

干杯, 詹姆斯。


更新

我使用了马蒂霍,Qtax提供的答案。非常感谢他们。 现在我理解了一点,我看到我的问题类似于以下内容:

Ignoring an optional suffix with a greedy regex

1 个答案:

答案 0 :(得分:3)

使用?使第二组可选,并在第一组中使用非贪婪匹配(通过*修改?)。像这样:

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