Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用正则表达式匹配包含多个url的行中的最后一个url?_Regex_Url - Fatal编程技术网

Regex 如何使用正则表达式匹配包含多个url的行中的最后一个url?

Regex 如何使用正则表达式匹配包含多个url的行中的最后一个url?,regex,url,Regex,Url,如果一行中有多个url,我想编写一个正则表达式来匹配以“.mp4”结尾的url 例如,对于以下行: "http://www.link.org/1610.jpg","Debt","http://www.archive.org/610_.mp4","66196517" 使用以下模式从第一个http到mp4进行匹配 (http:\/\/[^"].*?\.mp4)[",].*? 如何使其仅与最后一个url匹配 请注意,这些行可能包含任意数量的URL以及介于两者之间的任何内容。但只有最后一个url包含

如果一行中有多个url,我想编写一个正则表达式来匹配以
“.mp4”
结尾的url

例如,对于以下行:

"http://www.link.org/1610.jpg","Debt","http://www.archive.org/610_.mp4","66196517"
使用以下模式从第一个
http
mp4
进行匹配

(http:\/\/[^"].*?\.mp4)[",].*?
如何使其仅与最后一个url匹配

请注意,这些行可能包含任意数量的URL以及介于两者之间的任何内容。但只有最后一个url包含
.mp4
结尾

使用:

.*"(http:\/\/[^"].*?\.mp4)".*
默认情况下,通配符是贪婪的。第一部分首先抓取整个字符串,然后回溯,直到找到URL。这可能不是最有效的方法,但这并不重要,因为你只在一行文本上这样做(除非,比如说,这行有几千万个字符长)

顺便说一句,你在结尾的部分(
[”,]
)不太正确。这种模式意味着匹配
,而我怀疑你真正的意思是匹配序列(基于你的样本行)

最后,不需要使最后一个通配符贪婪。如果您正在进行查找而不是尝试匹配整行,则根本不需要它。

尝试使用

,\s*"(http://[^"]*?\.mp4)"\s*,\s*.*$ ,\s*“(http://[^”]*?\.mp4)”\s*,\s**$
(PCRE不使用/作为分隔符,而是使用例如|);它匹配
http://www.archive.org/610_.mp4
,如果不允许“打开和关闭链接,即
“链接”
;否则,是否添加\s*?也要匹配那些空格。另一个可能是错误的假设:链接是最后一个链接,但不是最后一个元素;如果不是这样,
mp4)“$
可能是RE的结尾,而不是现在使用的结尾。

可能匹配每个URL,并且只使用最后一个?