Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式以匹配div中img src的内容_Regex - Fatal编程技术网

Regex 正则表达式以匹配div中img src的内容

Regex 正则表达式以匹配div中img src的内容,regex,Regex,我是这个领域的新手,所以我对regex不太了解。我的问题是这样的 我在里面有一个“div”,它们是“href”属性,最后它们是“img”。我需要一个regex来匹配“img”源内容,如果特定内容的url匹配,我可以通过它获取该内容的数据 <div class="test_list3"> <a href="/photo/tst_t_45288/6782/12/1/">`<img src="http://example.com/1700/tst_t_45288/

我是这个领域的新手,所以我对
regex
不太了解。我的问题是这样的 我在里面有一个
“div”
,它们是
“href”
属性,最后它们是
“img”
。我需要一个
regex
来匹配
“img”
源内容,如果特定内容的
url
匹配,我可以通过它获取该内容的数据

<div class="test_list3">
   <a href="/photo/tst_t_45288/6782/12/1/">`<img  src="http://example.com/1700/tst_t_45288/m2/tst_t_45288_1.jpg" title="tst-t  1" alt="tst-t 1" /></a><br /><a href="http://example.com/1700/tst_t_45288/tst_t_45288_1.jpg"  target="_blank">jpg file</a>
</div>


有什么建议吗?

如果使用正则表达式是您最后的选择,您可以选择以下选项:

(?s)<div[^>]*>.*<img.*src=\"([^"]+)\".*<\/div>
(?s)]*>*

解释

  • 因为您有多行
    s
    标志需要使
    dot
    匹配换行符
  • 然后通过
    ]*>
    • [^>]*
      零个或多个字符,但不是
  • 然后,我们应该匹配所有其他内容,直到我们达到打开
    img
    tagby
    *
  • 在此之后,我们应该在
    src
    attribute之前遍历可能的属性或空格
  • 然后在
    src
    中捕获除
    以外的所有字符:
    src=\”([^”]+)
  • 最后,在第一次出现closing
    div
    tag之前,将所有内容都转义

我想我不能只靠一个人就能做到这一点

1.使用
]*>[^]*(((?'Open']*>)[^]*)+(((?'-Open')[^]*)+)*(?(Open)(?!)
获取两个div标记之间的内容


2.使用other reg-exp在步骤1中匹配匹配字符串并获取img标记之间的内容。

使用XML解析器。HTML不是一种常规语言,因此不应使用regex。@MillieSmith-另一方面,HTML(在其大多数形式中)XML不是也会让XML解析器窒息吗?另一方面,HTML解析器会非常合适。你打算在什么环境下在HTML上执行正则表达式?我的意思是它是java程序?还是什么?嗯。谢谢你指出@Damien_是一个不信的人。出于某种原因,我认为HTML是一个subset@MillieSmith-否,HTML具有void ele(例如,

)不应该有结束标记。非常感谢你们两位。谢谢你们的回答,如果可能的话,请您解释一下这些正则表达式背后的逻辑。@SurajRShrestha答案已更新。