非贪婪的正则表达式开头但不包含字符串

时间:2019-04-04 20:00:51

标签: c# regex string

我正在尝试从HTML中提取某些URL(例如,所有以http开头,包含/ tempfiles /并以.jpg结尾的URL)。我有类似的东西

http.*?\/tempfiles\/.*?\.jpg

问题是当我有类似HTML的内容时

blah blah <img src=http://somelink/file.html>http://server/tempfiles/blah.jpg
blah blah

它返回http://somelink/file.html etc more junk http://server/tempfiles/blah.jpg

有没有办法说第一个和/ tempfiles /之间不能有第二个http?

1 个答案:

答案 0 :(得分:2)

您可以使用

http(?:(?!http).)*?/tempfiles/.*?\.jpg

请参见regex demoRegulex graph

enter image description here

详细信息

  • http-一个http子字符串
  • (?:(?!http).)*?-除换行符以外的任何字符,重复次数为0或更多,且重复次数越少越好,这不会启动http字符序列
  • /tempfiles/-文字子字符串
  • .*?-除换行符外的任何0+个字符,应尽可能少
  • \.jpg-一个.jpg子字符串。