正则表达式:在 HTML 标签之间插入一些字符串/单词

正则表达式:在 HTML 标签之间插入一些字符串/单词

我有这个 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

在此处输入图片描述

相关内容