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

临门一脚,这个正则怎么匹配不上字符串啊?

  •  
  •   bug51 · 224 天前 · 1233 次点击
    这是一个创建于 224 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目标字符串:

    <!--#region REMOVE-->
    <h1>sdfsdf</h1>
    <h2>sdfsdf</h2>
    <h1>sdfsdf</h1>
    <h2>sdfsdf</h2>
    <h1>sdfsdf</h1>
    <h2>sdfsdf</h2>
    <!--#endregion REMOVE-->
    

    正则:

    ^\<\!\-\-\#region REMOVE.*[.|\n|\W|\w]*^\<\!\-\-\#endregion REMOVE.*$
    

    哪位好心人帮忙看看 多谢多谢!!

    第 1 条附言  ·  224 天前

    ^\<\!\-\-\#region REMOVE[\s\S]*?\<\!\-\-\#endregion REMOVE.*$

    要匹配多行。AI牛逼

    13 条回复    2024-04-12 23:28:37 +08:00
    creedowl
        1
    creedowl  
       224 天前   ❤️ 1
    要允许匹配多行
    jgh004
        2
    jgh004  
       224 天前   ❤️ 1
    随便丢给个 ai 就能写出来了
    Puteulanus
        3
    Puteulanus  
       224 天前
    ^\<\!\-\-\#region REMOVE.*[.|\n|\W|\w]*\<\!\-\-\#endregion REMOVE.*$
    你中间那个 ^ 是想干啥的
    Leon406
        4
    Leon406  
       224 天前   ❤️ 1
    <!--#region REMOVE-->\s+(.*)<!--#endregion REMOVE-->

    a0000
        5
    a0000  
       224 天前
    ^<!--#region REMOVE-->.*?<!--#endregion REMOVE-->$
    https://regex101.com/
    https://imgur.com/Zes8OLo
    https://imgur.com/kkRZ5Gc
    a0000
        6
    a0000  
       224 天前
    a0000
        7
    a0000  
       224 天前

    bug51
        8
    bug51  
    OP
       224 天前
    @a0000 我想跑一个旧的 nodejs 环境,不支持 /regany/s ,s 修饰符,所以用不了。

    我问 AI ,给我的回答是

    /^\<\!\-\-\#region REMOVE.*[\s\S]*?\<\!\-\-\#endregion REMOVE.*$/m


    能跑通正则测试。中间这里为啥多个了[\s\S]*?
    bug51
        9
    bug51  
    OP
       224 天前
    @a0000 在正则表达式中,[\s\S] 是一个常用的技巧,用来匹配任意字符(包括换行符)。这是因为在正则表达式中,. 默认是匹配除换行符外的任意字符,而 \s 是匹配空白字符(包括换行符)的元字符。

    因此,[\s\S] 结合在一起就能够匹配任意字符,包括换行符。这在需要匹配多行文本时非常有用,因为 . 不能匹配换行符,但 [\s\S] 可以。

    在这个正则表达式中,[\s\S]*? 的意思是尽可能少地匹配任意字符(包括换行符),直到下一个部分的匹配条件满足。这里的 *? 是一个非贪婪匹配量词,表示匹配任意数量的前一个元素,但尽可能少地匹配。
    a0000
        10
    a0000  
       224 天前
    #8 #9
    @bug51 学到了,现在有 ai 也太方便了
    bug51
        11
    bug51  
    OP
       224 天前
    @Leon406 大佬,有嵌套的情况是怎么匹配最外层的?

    <!-- #region HIDE -->
    <!-- #region HIDE -->
    需要匹配到
    <!-- #endregion HIDE -->
    需要匹配到 一堆 text
    <!-- #endregion HIDE -->
    bug51
        12
    bug51  
    OP
       224 天前
    @Leon406 还有这个,也是同名标签嵌套,也想匹配到最外层的:

    <!-- #region HIDE -->

    <!-- #region HIDE -->
    需要匹配到
    <!-- #endregion HIDE -->
    需要匹配到
    <!-- #region HIDE -->
    需要匹配到
    <!-- #endregion HIDE -->

    <!-- #endregion HIDE -->
    bug51
        13
    bug51  
    OP
       224 天前
    @Leon406 大佬 不用回复我了 ,最新的问题已经解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2896 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 07:58 · PVG 15:58 · LAX 23:58 · JFK 02:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.