2017-09-15 91 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]*