[英]RegEx do not match group with following \.\d
我嘗試查找其他文本中的地址。 它工作得很好,除了它還匹配一個單詞后跟一個日期(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。 直到星期五10.02.2012和
星期一,13.02。 直到2012年2月14日星期二,
每層14:00至15.30,
法薩寧加滕12 foobar
城堡 34
應該找到什么?
法薩寧加滕12
城堡 34
發現了什么?
06
10
13
14
每個14
法薩寧加滕12
foobar //這為什么匹配? 沒有號碼?
城堡 34
我嘗試過不同的正面/負面回望/-但沒有運氣。
在這里試試
(?<str>\b(?:[a-zA-Z]+-*[a-zA-Z]+(?:[ \t-])*(?:[a-zA-Z]|-)+)\b\.?\s)(?<no>\d+(?:\s?[a-zA-Z])?\b)(?![.:]\d)
否定的結尾(?![.:]\\d)
。: (?![.:]\\d)
確保沒有“。”。 並且在前面沒有\\d
:。
foobar //這為什么匹配? 沒有號碼?
城堡 34
這是匹配項,因為您允許在街道名稱的單詞之間使用\\s
(?<str>\b([a-zA-Z]+-*[a-zA-Z]+(-|\s)*([a-zA-Z]|-)+)\b\.?\s{1})(?<no>\d+(\s?[a-zA-Z])?\b)
^^ here
我在解決方案中用[ \\t-]
代替了它,這只允許空格,Tab和連字符。
\\s
是“空白”,它還包含行制動字符,因此它與foobar相匹配,如果您查看了該組,就會發現它與地址“ foobar Schlossstr。34”相匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.