假设我有以下HTML元素:
<iframe height="100" width="200" src="https://www.stackoverflow.com/share"></iframe>
<iframe height="100" width="200" src="https://www.google.com/share"></iframe>
<iframe height="100" width="200" src="https://www.yahoo.com/share"></iframe>
我要使用正则表达式来查找具有特定iframe
src
属性的(has to contain https://www.stackoverflow.com/share/{s}
,并获取此html属性中关联的其他属性。
所以在这个例子中,正则表达式会返回:
Group 1: https://www.google.com/share
Group 2: 100
Group 3: 200
我尝试了以下内容:
iframe.*src[^""]+['"]+(https:\/\/www.google.com\/share)
找到特定的URL并将其分配给组,无论它在字符串中的哪个位置。
我面临的问题是扩展此问题以返回HTML元素中的所有其他属性。
我已尝试将以下内容添加到正则表达式中:
\s+width="(.*?)"\s+height="(.*?)"
但这不会返回任何匹配。
如何(可能)使用我已形成的当前正则表达式来使用正则表达式获取剩余的属性值?
答案 0 :(得分:0)
<强>更新强>
对于http://stackoverflow.com/share/xxx
之类的网址,请使用(请参阅https://regex101.com/r/bKbfTt/6):
iframe\s*(?:\s|width="(.*?)"|height="(.*?)")+src="(.*?www\.stackoverflow\.com\/share\/.*?)"
对于http://stackoverflow.com/share
(不包含/xxx
部分)的网址,请使用(请参阅https://regex101.com/r/bKbfTt/5):
iframe\s*(?:\s|width="(.*?)"|height="(.*?)")+src="(.*?www\.stackoverflow\.com\/share(?:\/.*?)?)"
测试案例是:
<iframe height="100" width="200" src="https://www.youtube.com/share"></iframe>
<iframe height="100" width="200" src="https://www.youtube.com/share/xxx"></iframe>
<iframe height="100" width="200" src="https://www.stackoverflow.com/share/xxx"></iframe>
<iframe height="100" width="200" src="https://www.stackoverflow.com/share"></iframe>
<iframe height="100" width="200" src="https://www.google.com/share"></iframe>
<iframe height="100" width="200" src="https://www.google.com/share/xxx"></iframe>
<iframe height="100" width="200" src="https://www.yahoo.com/share"></iframe>
<iframe height="100" width="200" src="https://www.yahoo.com/share/xxx"></iframe>
上一个回答
检查出来:https://regex101.com/r/bKbfTt/1
正则表达式为iframe\s*(?:\s|width="(.*?)"|height="(.*?)"|src="(.*?)")+
,与您的示例匹配:
<iframe height="100" width="200" src="https://www.youtube.com/share"></iframe>
<iframe height="100" width="200" src="https://www.stackoverflow.com/share"></iframe>
<iframe height="100" width="200" src="https://www.google.com/share"></iframe>
<iframe height="100" width="200" src="https://www.yahoo.com/share"></iframe>