簡體   English   中英

正則表達式與以下\\。\\ d不匹配組

[英]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
foob​​ar //這為什么匹配? 沒有號碼?
城堡 34

我嘗試過不同的正面/負面回望/-但沒有運氣。

在這里試試

(?<str>\b(?:[a-zA-Z]+-*[a-zA-Z]+(?:[ \t-])*(?:[a-zA-Z]|-)+)\b\.?\s)(?<no>\d+(?:\s?[a-zA-Z])?\b)(?![.:]\d)

在Regexr上查看

否定的結尾(?![.:]\\d) 。: (?![.:]\\d)確保沒有“。”。 並且在前面沒有\\d :。

foob​​ar //這為什么匹配? 沒有號碼?
城堡 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM