我正在尝试使用CloudFront网址替换网址。
例如。 URL可以是
https://s3.amazonaws.com/bucket/folder/d05c229a73b5c6f169d599652015b1.png
https://s3.amazonaws.com/bucket-with-hyphen/folder/folder1/d05c229a73b5c6f169d599652015b1.png
https://s3.amazonaws.com/bucket-with-hyphen/folder-with-hyphen/folder1/d05c229a73b5c6f169d599652015b1.png
然后我会用:
preg_replace($pattern, $replacement, $string)
我的$replacement
将为$1cloudfront.net/$4';
到目前为止,这是我的$pattern
^(https?:\/\/)(s3.amazonaws.com)\/(\w+-\w+-\w+)\/(<I want the rest of the url>)
它只会匹配bucket-with-hyphen
,但不会匹配bucket-with
&amp;我不知道如何捕获URL的其余部分。
答案 0 :(得分:1)
这是您更新的正则表达式,它捕获“桶”,“桶与”或“桶与任何东西”,但不匹配“桶与其他东西”。如果您需要捕获第4个选项,请将{0,2}
更改为*
。
我只添加了可选的非捕获组(0或2次出现):
^(https?:\/\/)(s3.amazonaws.com)\/(\w+(?:-\w+){0,2})\/(.*)
^ ^ ^ ^
答案 1 :(得分:0)
您可以使用以下内容进行匹配:
(?<=\/)(?:\w+-)+\w+(?=\/) //no need to capture whole url here
并替换为cloudfront.net
请参阅DEMO