示例文本
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
由于
答案 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,以下是您需要注意的事项:
\b
部分匹配单词边界(\b
),(?m)^\s*
匹配行的开头((?m)
使^
匹配单词的开头然后\s*
匹配0+空格。您可以通过将模式替换为[\p{Zs}\t]*
来将其更改为仅匹配水平空格。