• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hujianxin
V2EX  ›  程序员

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

  •  
  •   hujianxin · Dec 8, 2016 · 3413 views
    This topic created in 3445 days ago, the information mentioned may be changed or developed.

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

    0050D6059167-1-20050D60df167-12

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

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

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

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

    编程语言是Java

    6 replies    2016-12-09 10:15:28 +08:00
    Herobs
        1
    Herobs  
       Dec 8, 2016 via Android
    (.*)-\d+
    showme1121
        2
    showme1121  
       Dec 8, 2016
    能否用这个 -\d*$ 先匹配 -以及后面的数字 然后在从元字符串里面去掉
    leopku
        4
    leopku  
       Dec 8, 2016
    楼上的正解

    这个更直观 https://www.debuggex.com/r/Titex7HwcHtvNfVa
    hujianxin
        5
    hujianxin  
    OP
       Dec 8, 2016
    @Herobs 多谢回复,这个方法可以,通过 group(1)就可以了。

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

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

    多谢各位了,我不太懂的原因还是我的 java 正则表达式捕获分组的原理不清楚,我刚才恶补了一下这个 group 分组原理,解决了问题:(.+)+(-.+), 然后 group(1)就可以了
    adv007
        6
    adv007  
       Dec 9, 2016 via iPhone
    js:str.replace(/\-\d+$/,'')就这样啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2900 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 15:00 · PVG 23:00 · LAX 08:00 · JFK 11:00
    ♥ Do have faith in what you're doing.