正则表达式匹配WebHarvy的电话和传真号码

时间:2017-09-15 20:35:21

标签: regex 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 个答案:

答案 0 :(得分: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]*来将其更改为仅匹配水平空格。