2017-09-15 92 views
1

示例文本正則表達式匹配的電話和傳真號碼試過以下WebHarvy

5950 S Willow Dr Ste 304 
Greenwood Village, CO 80111 
P (123) 456-7890 
F (123) 456-7890 
Get Directions 

,但它抓住了地址的第一行以及

(.*)(?=(\n.*){2}$) 

也試過

P\s(\(\d{3})\)\s\d+-\d+ 

但它在WebHarvy中不起作用,即使它適用於RegexStorm

尋找一個表達式來匹配來自它的電話號碼和傳真號碼。我將使用的表達WebHarvy

https://www.webharvy.com/articles/regex.html

感謝

+1

好的,但是你的問題是什麼?你是怎麼寫出正則表達式的? – juzraai

+0

對不起Juzraai - 我在上面的問題中添加了更多信息。好心檢查。謝謝 –

+0

嘗試'\ \ \ *(\(\ d {3} \)\ s * \ d + - \ d +)'或'\ bP \ s *(\(\ d {3} \)\ s * \ d + - \ d +)' –

回答

2

你的第二個模式是幾乎所有你需要做什麼。與P\s(\(\d{3})\)\s\d+-\d+,你捕獲到組1只有(\(\d{3})部分,而你需要捕獲整個號碼。

我也建議限制的背景:作爲一個完整的單詞或者匹配P,或作爲行的第一個單詞:

\bP\s*(\(\d{3}\)\s*\d+-\d+) 

(?m)^\s*P\s*(\(\d{3}\)\s*\d+-\d+) 

regex demo,並在這裏是你需要注意的那裏:

enter image description here

\b部分在字邊界(\b)和(?m)^\s*匹配的線的開始((?m)使得^匹配的線的開始),然後\s*比賽0+空格匹配。您可以將其更改爲僅匹配水平空格,方法是將此模式替換爲[\p{Zs}\t]*