代码之家  ›  专栏  ›  技术社区  ›  willcodejavaforfood

从img标记中提取src属性的正则表达式

  •  12
  • willcodejavaforfood  · 技术社区  · 16 年前

    我正在尝试编写一个模式,用于提取HTML中img标记中的文件路径。

    String string = "<img src=\"file:/C:/Documents and Settings/elundqvist/My Documents/My Pictures/import dialog step 1.JPG\" border=\"0\" />";
    

    src\\s*=\\s*\"(.+)\"
    

    问题是,我的模式还将包括img标记的'border=“0”部分。

    在不包含“border=”0的情况下,什么模式将与此文件的URI路径匹配?

    6 回复  |  直到 13 年前
        1
  •  40
  •   Sebastian Dietz    16 年前

    您的模式应该是(无景观):

    src\s*=\s*"(.+?)"
    

    重要的部分是添加了问号,以尽可能少地匹配组

        2
  •  16
  •   Alfonse    10 年前

    此外,它还确定您使用的是单引号(')还是双引号(“)。

    \<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>
    

    preg_match("/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/", $string, $matches);
    echo "$matches[1]";
    

    对于JavaScript,您可以执行以下操作:

    var match = text.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)
    alert(match[1]);
    

    希望这能有所帮助。

        3
  •  9
  •   mjk Nokhaiz Khalid    8 年前

    src\s*=\s*"([^"]+)"
    
        4
  •  5
  •   Naveen Murthy    5 年前

    /<img.*?src="(.*?)"/g
    

    验证于 https://regex101.com/r/aVBUOo/1

        5
  •  0
  •   oxbow_lakes    16 年前

    你想玩贪婪的集体捕获。差不多

    src\\s*=\\s*\"(.+)?\"

    默认情况下,正则表达式将尝试尽可能多地匹配

        6
  •  0
  •   bobince    16 年前

    更不用说“src=”以纯文本显示的任何时间!

    如果您事先知道要解析的HTML的确切格式(例如,因为是您自己生成的),您就可以不受影响。但除此之外,regex对于这项工作来说是完全错误的工具。

        7
  •  0
  •   Brlja    8 年前

    src src
    src\s*=\s*"?(.+?)["|\s]