如何将php中包含https url的字符串与固定数量的字母数字字符相匹配?
我有一个字符串,看起来像:如何将php中包含https url的字符串与固定数量的字母数字字符相匹配?,php,regex,Php,Regex,我有一个字符串,看起来像: "res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg" 我的bash正则表达式是(如果我们让上面的值等于$str): 它可以清晰地提取https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg 在PHP中,我不确定是否存在与上述内容相同的内容。有人有什么建议吗?您只需避开正则表达式中的所有/和,就可以了。我还删除了接近尾
"res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"
我的bash正则表达式是(如果我们让上面的值等于$str
):
它可以清晰地提取https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg
在PHP中,我不确定是否存在与上述内容相同的内容。有人有什么建议吗?您只需避开正则表达式中的所有
/
和
,就可以了。我还删除了接近尾端的一个点
my\.site\.com\/image\/I\/[[:alnum:]]{11}_[a-zA-Z0-9_]*_\.jpg
试试看。使用PHP,您可以通过以下方式选择它:
$subject = '"res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"';
$regex = '/https:\/\/my\.site\.com\/image\/I\/[[:alnum:]]{11}_[a-zA-Z0-9_]*_.jpg/'
preg_match($regex , $subject , $matches);
var_dump($matches);
输出:
array(1) {
[0]=>
string(51) "https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"
}
在我看来,您希望验证符合条件的url是否用双引号括起来,并在前面加上
“res”:,然后您只想提取该url
开始时的向后看和结束时的向前看将验证准确的完整字符串
点必须转义才能作为字符串文字处理
你的下划线前有一个额外的点,我相信你不想保留
如果使用非斜杠字符作为模式分隔符,则不需要转义正斜杠(我将使用~
)
[a-zA-Z0-9.]
更简洁地写为\w
代码:()
在PHP中也是如此。
array(1) {
[0]=>
string(51) "https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"
}
$string = '"res":"https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg"';
echo preg_match('~(?<=^"res":")https://my\.site\.com/image/I/[a-zA-z\d]{11}_\w*_\.jpg(?="$)~', $string, $out) ? $out[0] : 'no match';
https://my.site.com/image/I/fj23l6j2lgk_AM1200_.jpg