我在创建regexpr以捕获标记imgs中的所有ID时遇到问题。我有一个代码:
#<span><img (id='"([^"]*)'").*><'/span>#
示例:
https://regex101.com/r/aN0uO0/3
仅捕获来自第一标签IMG的ID。谢谢
这是因为您没有搜索globally
,以便在右侧文本字段(右侧/标记之后)输入g。
如果您在php中使用preg_match
,请使用preg_match_all
,它就会起作用。
如果您渴望使用正则表达式,您可以使用:
<img[^>]*?id=(['"])(.+?)'1
您将在第二组($2
)中找到id。但是,如果属性中的某个位置有>
(在HTML
中完全有效),则regex将无法按预期工作。在PHP
代码中,这将是:
$regex = '~<img[^>]*?id=([''"])(.+?)'1~';
$string = 'your_string_here';
preg_match_all($regex, $string, $matches, PREG_SET_ORDER);
请参阅regex101.com上的示例。
提示:使用解析器几乎总是更好的,例如SimpleXML
或DomDocument