正则表达没有按预期工作

时间:2017-10-24 05:50:54

标签: regex

我需要提取一个字符串,我需要提取特定的网址,其中包含图片扩展名,后面是正则表达式,但我没有使用过,但我认为它不像

那样工作
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或任何其他图片扩展名的网址,以便我尝试

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

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式提取图片网址:

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

RegEx Demo

您的图片网址在第1组中被捕获。这假设您的URL不包含逗号字符。

如果图片网址中允许使用逗号,请使用带有否定前瞻的正则结构:

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

RegEx Demo 2

答案 1 :(得分:1)

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

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

Demo