V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lixia625
V2EX  ›  问与答

正则表达式 某两个确定字符串之间任意的东西

  •  
  •   lixia625 · 2014-11-10 17:00:38 +08:00 · 17144 次点击
    这是一个创建于 3462 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如AAxxxBB,我要拿到xxx;
    现在只知道AA(.*?)BB
    但这样貌似是匹配整一个AAxxxBB?
    啊好弱啊每次写正则表达式就只会自己在那瞎试,
    大家有什么好的学习方法吗?
    16 条回复    2017-02-07 17:25:36 +08:00
    iEverX
        1
    iEverX  
       2014-11-10 17:10:42 +08:00
    ()是个group,可以取到的
    python的话,m.group(1)就可以了
    wolong
        2
    wolong  
       2014-11-10 17:14:46 +08:00
    替换掉AA和BB就是中间的了
    lixia625
        3
    lixia625  
    OP
       2014-11-10 17:17:58 +08:00
    @iEverX
    java string.replaceAll呢?
    coofly
        4
    coofly  
       2014-11-10 17:22:26 +08:00
    可以使用前瞻否定式,不过你这种其实没必要,用1楼的方法就挺好
    besto
        5
    besto  
       2014-11-10 17:22:45 +08:00
    字符串都确定了,还需要正则么。。。直接substring啊(AA BB的长度自己算)
    lixia625
        6
    lixia625  
    OP
       2014-11-10 17:23:53 +08:00
    @besto 主要不是取出,是要替换,不更改原string
    besto
        7
    besto  
       2014-11-10 17:33:25 +08:00
    @lixia625
    建议还是把具体场景拿出来。
    halfelf
        8
    halfelf  
       2014-11-10 17:41:41 +08:00
    (?<=AA).*(?=BB)
    lixia625
        9
    lixia625  
    OP
       2014-11-10 18:05:57 +08:00
    @halfelf
    那个小于号是啥意思,测试了下似乎报错啊。
    (?=AA).*?(?=BB)这样测试了下拿到了AAxxx 好奇怪
    lululau
        10
    lululau  
       2014-11-10 18:07:50 +08:00   ❤️ 1
    ```
    s.replaceAll("(?<=AA).*?(?=BB)", "CCC");
    s.replaceAll("(AA).*?(BB)", "$1CCC$2");

    ```
    lixia625
        11
    lixia625  
    OP
       2014-11-10 18:19:28 +08:00
    @lululau
    nice!!
    干的漂亮
    Sunyanzi
        12
    Sunyanzi  
       2014-11-10 18:22:17 +08:00   ❤️ 1
    学习方法吗 ... /t/144987 供参考 ...
    lixia625
        13
    lixia625  
    OP
       2014-11-10 18:23:04 +08:00
    lushl9301
        14
    lushl9301  
       2014-11-10 21:59:44 +08:00
    我是用perl的,括号里面表示想要匹配后保留的(算是吧)
    perl用 $1 表示 = = (真是丧失 = =)
    hiddenman
        15
    hiddenman  
       2014-11-11 10:39:50 +08:00
    @lululau 零宽断言
    iimT
        16
    iimT  
       2017-02-07 17:25:36 +08:00
    js 的话用 match 方法 然后得到一个 array 其中 array[0]是包括 AA 与 BB 的 array[1]是不包括的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1182 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:39 · PVG 01:39 · LAX 10:39 · JFK 13:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.