Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 为什么我的正则表达式没有给出期望的结果_Regex - Fatal编程技术网

Regex 为什么我的正则表达式没有给出期望的结果

Regex 为什么我的正则表达式没有给出期望的结果,regex,Regex,我有一个字符串,需要从中提取由图像扩展名和以下正则表达式组成的特定url: ITEMIMAGEURL\d+=(http://.*?)(,|$|\n) 我要从中提取的字符串是: ITEMIMAGEURL0 = http://images.example.com/xyz/l/dasda/test-image-6af8af8afa9.jpg, ITEMIMAGEURL1 = http://images.example.com/xyz/l/dasda/test-image-, ITEMIMAGEURL

我有一个字符串,需要从中提取由图像扩展名和以下正则表达式组成的特定url:

ITEMIMAGEURL\d+=(http://.*?)(,|$|\n)
我要从中提取的字符串是:

ITEMIMAGEURL0 = http://images.example.com/xyz/l/dasda/test-image-6af8af8afa9.jpg,
ITEMIMAGEURL1 = http://images.example.com/xyz/l/dasda/test-image-,
ITEMIMAGEURL2 = http://images.example.com/abc/as/test/test-image-abrd23lg9.jpg
我的正则表达式工作正常,但我只想提取带有
.jpg |.gif
或任何其他图像扩展名的url,所以我尝试了

ITEMIMAGEURL\d+=(http://.*?(?(?=.[a-zA-Z]{3,4})))(,|$|\n)
但它并没有像预期的那样起作用

我的预期结果是

http://images.example.com/xyz/l/dasda/test-image-6af8af8afa9.jpg
http://images.example.com/abc/as/test/test-image-abrd23lg9.jpg

您可以使用此正则表达式提取图像URL:

ITEMIMAGEURL\d+=(http://[^,\s]+?\.(?:jpe?g|gif|png))

您的图像URL在组#1中捕获。这假设您的URL不包含逗号字符

如果图像URL中允许使用逗号,则使用带有负前瞻性的正则表达式:

ITEMIMAGEURL\d+=(http://(?:(?!,ITEMIMAGEURL\d).)+\.(?:jpe?g|gif|png))

您可以使用此正则表达式提取图像URL:

ITEMIMAGEURL\d+=(http://[^,\s]+?\.(?:jpe?g|gif|png))

您的图像URL在组#1中捕获。这假设您的URL不包含逗号字符

如果图像URL中允许使用逗号,则使用带有负前瞻性的正则表达式:

ITEMIMAGEURL\d+=(http://(?:(?!,ITEMIMAGEURL\d).)+\.(?:jpe?g|gif|png))

我想你知道RegExp的基本知识。所以有一个:
(?:\/[\w\.-]+)
这是一个有效url路径的模式。这不仅仅是一个有效选项,您可以选择任何您喜欢的选项,例如
(?:\/[^\s,]+)

我想你知道RegExp的基本知识。所以有一个:
(?:\/[\w\.-]+)
这是一个有效url路径的模式。这不仅仅是一个有效选项,您可以选择任何您喜欢的选项,例如
(?:\/[^\s,]+)


太棒了,这就是我要找的东西