V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Moris
V2EX  ›  正则表达式

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

  •  
  •   Moris · 2022-08-10 00:25:48 +08:00 · 1203 次点击
    这是一个创建于 863 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    我想要把在

    之间的 /去掉,变成

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

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

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

    <html>
     <p>
       Have a/ good/ day! 祝你 /开心!
     </p>
     <script>
       const s = `
       <html>
        <p>
          Have a/ good/ day! 祝你 /开心!
        </p>
       </html>
      `;
     </script>
    </html>
    autoxbc
        4
    autoxbc  
       2022-08-10 01:54:07 +08:00   ❤️ 2
    X-Y 问题,应该用 DOM Parser 来做
    LeeReamond
        5
    LeeReamond  
       2022-08-10 02:48:23 +08:00
    老生常谈的问题了,正则表达式做不到 parsexml 的操作,因为它是一个有限状态机,而处理语义划分逻辑必须记录当前状态,比如前面经过了多少个 ptag
    cssk
        6
    cssk  
       2022-08-10 07:20:46 +08:00 via iPhone
    各种 soup 随便搞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3321 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.