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

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

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

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

    0050D6059167-1-2 和 0050D60df167-12

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

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

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

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

    编程语言是Java

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

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

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

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

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