请教一下,如何利用正则表达将 html 中在<p></p>之间的/筛选出来

2022-08-10 00:25:48 +08:00
 Moris

例如,我有一个 html 内容如下

<html>
    <p>
        Have a/ good/ day! 祝你 /开心!
    </p>
</html>

我想要把在

之间的 /去掉,变成

<html>
    <p>
        Have a good day! 祝你开心!
    </p>
</html>

请问该通过正则表达如何实现?

1066 次点击
所在节点    正则表达式
6 条回复
ryougifujino
2022-08-10 00:45:13 +08:00
分两次做比较容易
1 、<p>([\w\W]+)<\/p>
2 、replace /
vilic
2022-08-10 00:53:27 +08:00
```
.replace(/(<p>)([^]*?)(<\/p>)/g, (_text, open, content, close) => `${open}${content.replace(/\//g, '')}${close}`)
```
wxf666
2022-08-10 00:59:00 +08:00
所以,这种情况咋办?

<html>
 <p>
   Have a/ good/ day! 祝你 /开心!
 </p>
 <script>
   const s = `
   <html>
    <p>
      Have a/ good/ day! 祝你 /开心!
    </p>
   </html>
  `;
 </script>
</html>
autoxbc
2022-08-10 01:54:07 +08:00
X-Y 问题,应该用 DOM Parser 来做
LeeReamond
2022-08-10 02:48:23 +08:00
老生常谈的问题了,正则表达式做不到 parsexml 的操作,因为它是一个有限状态机,而处理语义划分逻辑必须记录当前状态,比如前面经过了多少个 ptag
cssk
2022-08-10 07:20:46 +08:00
各种 soup 随便搞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/871800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX