我需要提取一个字符串,我需要提取特定的网址,其中包含图片扩展名,后面是正则表达式,但我没有使用过,但我认为它不像
那样工作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
答案 0 :(得分:2)
您可以使用此正则表达式提取图片网址:
ITEMIMAGEURL\d+=(http://[^,\s]+?\.(?:jpe?g|gif|png))
您的图片网址在第1组中被捕获。这假设您的URL不包含逗号字符。
如果图片网址中允许使用逗号,请使用带有否定前瞻的正则结构:
ITEMIMAGEURL\d+=(http://(?:(?!,ITEMIMAGEURL\d).)+\.(?:jpe?g|gif|png))
答案 1 :(得分:1)
ITEMIMAGEURL\d+=(http:\/(?:\/[\w\.-]+)+\.(?:jpe?g|gif|png),?\s?)?
我认为您了解RegExp的基础知识。所以一个:(?:\/[\w\.-]+)
这是一个有效的url路径模式。这不仅是有效的,您可以选择任何您喜欢的,例如(?:\/[^\s,]+)
。