Regex 为什么我的正则表达式没有给出期望的结果
我有一个字符串,需要从中提取由图像扩展名和以下正则表达式组成的特定url: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
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,]+)
太棒了,这就是我要找的东西