问题
我想选择两个字符串之间的第一个内容。例如:
https://subdomain.domain.com/lobby/het/login?retUrl=https://subdomain.domain.com/lobby/het/responsible?retUrl=https://uat-api.domain.com/forms/authorise-client?retUrl=https://subdomain.domain.com/lobby/het/login?retUrl=https://subdomain.domain.com/lobby/het/testing?retUrl=https://uat-api.domain.com/forms/authorise-client?locale=en-GB&client_id=123&response_type=token&redirect_uri=https://subdomain/rem/rep/sol.html&prompt=0&state=authorise-client
我们可以在上面的URL中看到retUrl多次出现。
问题
如何使用正则表达式仅选择第一个retUrl(上面的字符串中的粗体)的内容?那么,我们需要第一个以“retUrl =”开头的字符串,并在第一次出现时结束?在它之后。这甚至可能吗?
尝试失败
(?=retUrl=)(.*\n?)(?=\?)
(retUrl=)(.*)$\?
答案 0 :(得分:2)
这应该适合你:
/retUrl=([^\?]*)/
使用([^\?]*)
,您可以简单地说直到问号为止。所以你可以使用preg_match()
的正则表达式,它只会给你那个正则表达式的第一个匹配。
答案 1 :(得分:1)
preg_match
只找到第一场比赛。你去吧。
相比之下,preg_match_all
找到所有匹配项。