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

请教下,这个正则如何表示?

  •  
  •   cmichael · 2021-02-23 19:27:50 +08:00 · 1149 次点击
    这是一个创建于 1369 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 以()[开头,)结尾,总长 30 个字符
    2. 以()[开头,总长 30 个字符
    10 条回复    2021-02-24 01:13:39 +08:00
    imn1
        1
    imn1  
       2021-02-23 19:44:29 +08:00
    ^\(\)\[.{27}$
    kingdeguo
        2
    kingdeguo  
       2021-02-23 19:50:27 +08:00 via Android
    1 ^\(\)\[.{26}\)$
    2 ^\(\)\[.{27}
    cmichael
        3
    cmichael  
    OP
       2021-02-23 21:17:24 +08:00
    如果是以[ ](开头,)结尾呢?
    cmichael
        4
    cmichael  
    OP
       2021-02-23 21:18:30 +08:00
    ^\[\s\]\(.\)$ 好象不行?
    kingdeguo
        5
    kingdeguo  
       2021-02-23 22:50:14 +08:00
    @cmichael 应该使用^\[\]\(.*\)$
    解释如下:
    ^匹配开头,$匹配末尾。
    为了匹配[、]、(、)、这几个符号需要使用\进行转义
    使用.*来匹配中间的内容,符号.表示匹配任一一个字符,符号*表示数量为 0 到 n
    cmichael
        6
    cmichael  
    OP
       2021-02-23 23:07:42 +08:00
    @kingdeguo 这个试了好象不对, [ ]之间有个空格的,用\s 不对
    kingdeguo
        7
    kingdeguo  
       2021-02-24 00:07:13 +08:00
    @cmichael 抱歉没有看到[]之间的空格。如果有空格的话使用正则表达^\[\s\]\(.*\)$可以匹配成功的。我刚测试了一下。
    我使用的是 Perl 的正则表达式。猜测你不匹配的原因是你使用的可能是 Basic RegEx 或者 Extended RegEx,这两个不支持\s 。
    可参考这篇博文: https://blog.csdn.net/yufenghyc/article/details/51078107
    fiveelementgid
        8
    fiveelementgid  
       2021-02-24 00:22:29 +08:00 via Android
    需求先问
    是定长还是可变长
    {}要确定上下限
    kaiki
        9
    kaiki  
       2021-02-24 00:52:49 +08:00
    得看原始需求啊,以及来两个需要匹配的正文例子
    cmichael
        10
    cmichael  
    OP
       2021-02-24 01:13:39 +08:00
    谢谢了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2675 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:17 · PVG 13:17 · LAX 21:17 · JFK 00:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.