正则表达式 - 无法从HTML元素中获取特定属性

时间:2018-03-17 14:16:54

标签: c# regex regex101

假设我有以下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="(.*?)"

但这不会返回任何匹配。

如何(可能)使用我已形成的当前正则表达式来使用正则表达式获取剩余的属性值?

My regex 101 file

1 个答案:

答案 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>