我正在尝试创建一个正则表达式,从该字符串中抓取第一次出现的电话号码:
<font color="#848484">Transferor(s)</font>
<br />Harzuz Holdings Ltd<br />Ontario Potato Inc 905-791-7735<br />
<em>Clark Packaging Products Inc</em>
<p>
</p>Pres: Jay Burstein<br />8 Tracey Blvd, Unit 2<br />Brampton, Ontario<br />L6T 5R9<p>
</p>
<font color="#848484">Transferee(s)</font>
<br />2470347 Ontario Inc 416-223-4403<br />
电话号码的格式始终如下:999-999-9999
。我遇到的问题是,当我只想抓住第一个时,我的正则表达式是从我的字符串中抓取两个电话号码。这是我到目前为止所尝试的:
(\d\d\d-\d\d\d-\d\d\d\d) ?
会返回多个电话号码
(\d\d\d-\d\d\d-\d\d\d\d) {1}
也会返回多个电话号码
我可以用什么正则表达式来选择第一个电话号码?我可以用什么正则表达式来选择第二个电话号码?
我正在使用uBot这是一种Windows自动化软件。这是我尝试过的代码,但这些代码都不适用于我:
set(#phone1, $find regular expression(#x, "\\d\\d\\d-\\d\\d\\d-\\d\\d\\d\\d ?"), "Global")
set(#phone2, $find regular expression(#x, "(\\d\\d\\d-\\d\\d\\d-\\d\\d\\d\\d)\{1\}"), "Global")
答案 0 :(得分:1)
由于这是一个多行字符串,它有换行符,你可以使用它来区分第一个出现(在一行中以换行符号结尾:\n
)和最后一个:
(\d{3}-\d{3}-\d{4})(?=.*\n)
中进行测试
答案 1 :(得分:1)
现在,我想您知道如何识别电话号码,但问题是您如何知道哪一个是第一个?
比说出&#34; first&#34; 更好的方法,我建议您将电话号码模式绑定到关键字&#34; Transferor&#34; 相反,这是更多的语义,因此我们得到一个模式
(?<=Transferor)[\s\S]*(\d{3}-\d{3}-\d{4})
<强>解释强>
(?<=Transferor)
检查是否有单词&#34;转移者&#34;前,
[\s\S]*
任意字符串,包括换行符,
(\d{3}-\d{3}-\d{4})
电话号码。
现在Transferor的电话号码存储在$1
变量中。
请注意,上面的正则表达式只是一个标准表单,请根据.NET进行编辑。