正则表达式解析地址和公寓号码

时间:2016-07-27 12:41:27

标签: c# regex

目前我正在使用此正则表达式

private string DigExp = @"[^\d]";
那样:

Regex.Match(Address, DigExp, "")

虽然字符串地址通常包含字符和数字.. 让我们说如果地址是 “ipsum lorem 30/9”或“ipsum lorem 309”在两个例子中我仍然得到309。我需要两个正则表达式来解决它,一个匹配第一个数字直到/如果存在,另一个匹配第二个应该在字符串结尾之后/可能根本不存在。

我需要将地址编号分隔为带有/

的正则表达式组 你可以指导我实现我的目标吗? 感谢。

4 个答案:

答案 0 :(得分:1)

您可以轻松地分为两组:

(\d+)/?(\d*)

答案 1 :(得分:1)

尝试使用此模式:

([\d\/\d]+|\d+)  

答案 2 :(得分:1)

通过使用组,您可以使用以下正则表达式来隔离地址字符串的不同部分。以下将地址分为所有单词以及可选斜杠之前和之后的数字:

((?:[a-zA-Z]+\s)*)([\d]+)(?:(?:\/)(\d+))?

例如:"ipsum lorem 30/9"变为:

  

匹配#0 长度:16范围:1-16

     

ipsum lorem 30/9

     

第1组长度:12

     

ipsum lorem

     

第2组长度:2

     

30

     

第3组长度:1

     

9

注意:以下正则表达式增加了匹配第四组数字后的单词的功能:

((?:[A-ZA-Z] + \ S))([\ d] +)(?:(?:/)(\ d +))((?:?\ S [一个-ZA-Z] +)

答案 3 :(得分:0)

尝试:[a-zA-Z\s]*([\d]*)\/?([\d]*)?。这将获得第一组中的第一部分以及第二组/之后的任何内容。