现在已经挣扎了几个小时......
我有以下正则表达式:
(?<=\bdata-video-id=""."">)(.*?)(title=.*?>)
以下输入:
<div class="cameras">
<table class="results">
<colgroup>
<col class="col0">
<col class="col1">
</colgroup>
<thead>
<tr>
<th title="Name">
Name
</th>
<th title="Date">
Date
</th>
</tr>
</thead>
<tbody>
<tr data-video-id="1">
<td title="149 - Cam123">
149 - Cam123
</td>
<td title="Feb 18 2013">
Feb 18 2013
</td>
</tr>
<tr data-video-id="2">
<td title="150 - Cam456">
150 - Cam456
</td>
<td title="Feb 18 2013">
Feb 18 2013
</td>
</tr>
</tbody>
</table>
</div>
正则表达式输出:
<td title="149 - Cam123">
<td title="150 - Cam456">
但我想得到的是每个表格行中 1st 单元格的title属性的内容:
149 - Cam123
150 - Cam456
行数可能明显不同,但列数是固定的。 请帮我调整上面的正则表达式。 感谢
注意:解决方案必须是正则表达式。我无法访问代码库,因此无法使用HTML解析器或任何其他类型的代码干预。我可以挂钩到应用程序的唯一方法是注入一个不同的正则表达式。
答案 0 :(得分:0)
根据OP要求它必须是正则表达式,那么我的建议是在内部标题信息中添加一个组包装器:
(?<=\bdata-video-id=""."">).*?title="(.*?)">
否则,一般解决方案是不使用正则表达式:
为什么使用正则表达式?由于标签的复杂性,典型的解决方案是使用HTML解析器
Here is another even more popular response on using regex for XHTML 指出了