【发布时间】:2012-01-22 17:41:08
【问题描述】:
我尝试在不同的文本中查找地址。它工作得很好,除了它还匹配一个单词后跟一个日期(foobar 22.01.2012 => address: foobar 22) 所以我想改进正则表达式,让街道号码后面不能跟“(.|:)\d”
这就是我所拥有的:
(?<str>\b([a-zA-Z]+-*[a-zA-Z]+(-|\s)*([a-zA-Z]|-)+)\b\.?\s{1})(?<no>\d+(\s?[a-zA-Z])?\b)
有代表性的文字:
咨询时间
星期一,06.02。直到星期五,2012 年 2 月 10 日和
星期一,13.02。直到 2012 年 2 月 14 日星期二,
每14.00-15.30点,二楼,
Am Fasanengarten 12 foobar
Schlossstr. 34
应该找到什么?
Am Fasanengarten 12
Schlossstr. 34
发现了什么?
06
10
13
14
每个 14
Am Fasanengarten 12
foobar // 为什么这是一个匹配项?没有号码?
Schlossstr. 34
我尝试了不同的正面/负面的lookbehinds/-aheads,但没有运气。
【问题讨论】:
-
应该如何将“Am Fasanengarten 12 Scholossstr. 34”与文本的其余部分区分开来?它有由字母字符、数字和句点组成的单词,每个单词用空格分隔。整个文本也是如此。单词大写的事实是否应该很重要? -- 我认为你可以从中吸取教训:每当你开始编写一个正则表达式时,你需要非常清楚你想要匹配什么和不想匹配什么。
标签: c# .net regex street-address