2016-05-16 91 views
1

所以我有这个简单的文字:获得从文本链接

To activate your account click the link below: 
https://tbeyfee-gkg9834636j-gergity3yu3hgge-drgengo9476y3ltjne 
If the above URL does not work try copying and pasting it into your browser. If you continue to have problem please feel free to contact us. 
If you have any questions, please do not hesitate to contact your account manager directly or email us at [email protected] and we'll get right back to you. 
Thanks again for choosing logger. 
Kind regards, 
The Logger Team 

会是什么简单的方法来抓住这个https链接?

这是我尝试:

val str = "" // This is my string. 
val pattern = new Regex("^https.*$") 

println(pattern.findAllIn(str)) 
+0

这是1:'^ https。* $'' – ritesht93

+0

你是否坚持使用Scala代码或正则表达式?有关正则表达式,请参阅http://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url。 –

+0

请参阅我的更新。 –

回答

2

可以使用多修饰符(?m)与您正则表达式,这将使^$一个线的开始和结束匹配整个字符串,而不是

var str = "To activate your account click the link below:\nhttps://tbeyfee-gkg9834636j-gergity3yu3hgge-drgengo9476y3ltjne\nIf the above URL does not work try copying and pasting it into your browser. If you continue to have problem please feel free to contact us.\nIf you have any questions, please do not hesitate to contact your account manager directly or email us at [email protected] and we'll get right back to you.\nThanks again for choosing logger.\nKind regards,\nThe Logger Team" 
val pattern = new Regex("(?m)^https://.+$") 
val res = pattern.findFirstIn(str) 
println(res) 

Ideone demo

我也建议用+替换*(0或多次出现)量词匹配1个或多个的任何字符,但换行符(与.)。此外,您可以使用https?://\S+来匹配较大文本内的大部分网址。

由于您只需要1个网址,我建议您使用findFirstIn而不是findAllIn(请参阅Scala Regex reference)。