V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hujianxin
V2EX  ›  程序员

这个字符串用正则表达式怎么弄?

  •  
  •   hujianxin · 2016-12-08 17:38:13 +08:00 · 2591 次点击
    这是一个创建于 2908 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我这里有两个字符串:

    0050D6059167-1-20050D60df167-12

    我现在需要扣取一个子字符串:

    1. 0050D6059167-1-2 ---> 0050D6059167-1

    2. 0050D60df167-12 ---> 0050D60df167

    也就是说吧最后一个-以及后面的数字给扣掉,扣取前面的部分,这个怎么解呢?谢谢

    编程语言是Java

    6 条回复    2016-12-09 10:15:28 +08:00
    Herobs
        1
    Herobs  
       2016-12-08 17:40:42 +08:00 via Android
    (.*)-\d+
    showme1121
        2
    showme1121  
       2016-12-08 17:45:43 +08:00
    能否用这个 -\d*$ 先匹配 -以及后面的数字 然后在从元字符串里面去掉
    leopku
        4
    leopku  
       2016-12-08 18:39:15 +08:00
    楼上的正解

    这个更直观 https://www.debuggex.com/r/Titex7HwcHtvNfVa
    hujianxin
        5
    hujianxin  
    OP
       2016-12-08 18:52:53 +08:00
    @Herobs 多谢回复,这个方法可以,通过 group(1)就可以了。

    @showme1121 多谢回复,这个应该可以,我通过下面的方式可以获取了。

    @Jodal 多谢代码,这是 ruby 的方式吗,语法真是简洁。不过你写的正则那一块我不太懂,那个?=是什么意思啊?

    多谢各位了,我不太懂的原因还是我的 java 正则表达式捕获分组的原理不清楚,我刚才恶补了一下这个 group 分组原理,解决了问题:(.+)+(-.+), 然后 group(1)就可以了
    adv007
        6
    adv007  
       2016-12-09 10:15:28 +08:00 via iPhone
    js:str.replace(/\-\d+$/,'')就这样啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:51 · PVG 20:51 · LAX 04:51 · JFK 07:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.