我有这个 HTML 标签:
</table>
<p class="text_obisnuit2"><em>
我想要插入一个html注释,这样就变成:
</table>
<!-- NEW TEXT -->
<p class="text_obisnuit2"><em>
我创建了一个正则表达式,但是不起作用:
寻找:(<\/table>)(\s+\S+)(<p class="text_obisnuit2"><em>)
替换为:\1 <!-- NEW TEXT --> \3
答案1
您的正则表达式可以改进如下:
- Ctrl+H
- 找什么:
</table>(\R\h*)\K(?=<p class="text_obisnuit2"><em>)
- 用。。。来代替:
<!-- NEW TEXT -->$1
- 查看 环绕
- 查看 正则表达式
- Replace all
解释:
</table> # literally
(\R\h*) # group 1, any kid of linebreak and 0 or more horizontal spaces
\K # forget all we have seen until this position
(?=<p class="text_obisnuit2"><em>) # positive lookahead, make sure we have this text after
替代品:
<!-- NEW TEXT --> # new value to be inserted
$1 # content of group 1, a linebreak and horizontal spaces
这会保留原始文本的换行符和水平空格数。
截图(之前):
截图(之后):
答案2
寻找:(</table>)(\r\s+)(<p class="text_obisnuit2"><em>)
替换为:\1\r\n\t <!-- NEW TEXT --> \r\n\t\3
或者
寻找:(?s)(</table>)(.*)(<p class="text_obisnuit2"><em>)
替换为:\1\r\n\t <!-- NEW TEXT --> \r\n\t\3
或者
如果你有类似这样的情况:
</tr>
</table>
<p class="text_obisnuit2"><em>
寻找:(?s)(</tr>.*\K</table>)(.*)(<p class="text_obisnuit2"><em>)
替换为:\1\r\n\t <!-- NEW TEXT --> \r\n\t\3