c# - 用于匹配地址和可选后缀的正则表达式

标签 c# .net regex

我有两种格式的地址:

SomeHouse,
Holbrook,
Belper,
Derbyshire,
DE56 0RR

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

该数字仅出现在末尾,始终位于括号中且始终为 12 位数字。

我正在尝试获取一个正则表达式来匹配两个组...地址和号码(如果存在)。

这是一个令人头疼的事情(对于我没有经验的自己来说),因为我无法让我的表达在这两种类型的地址上工作。

我有

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

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

请多多指教!

干杯, 詹姆斯。


更新

我使用了Martinho提供的答案,Qtax。非常感谢他们。 现在我明白了一点,我发现我的问题类似于以下内容:

Ignoring an optional suffix with a greedy regex

最佳答案

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

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

关于c# - 用于匹配地址和可选后缀的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663258/

相关文章:

regex - 在 Eclipse 查找/替换字段中,我可以更改正则表达式匹配结果 $1 吗?

regex - 为什么我的 Perl 正则表达式会提示 "Unmatched ) in regex"?

c# - 在 RavenDb 中映射减少 2 个带有子集合的集合

asp.net - 如何将asp.net NULL值转换为 ""(空白字符串)

c# - 跳跃和记住跳跃时间的问题

.net - 如何从单精度转换为 double 并保持精度

C# 服务器线程分配

php - Preg_match_all 和 javascript 数组

c# - 将带有 List<> 的对象绑定(bind)到 Crystal Report

c# - 从 CS 文件中提取信息的正则表达式