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

2016-12-08 17:38:13 +08:00
 hujianxin

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

0050D6059167-1-20050D60df167-12

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

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

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

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

编程语言是Java

2409 次点击
所在节点    程序员
6 条回复
Herobs
2016-12-08 17:40:42 +08:00
(.*)-\d+
showme1121
2016-12-08 17:45:43 +08:00
能否用这个 -\d*$ 先匹配 -以及后面的数字 然后在从元字符串里面去掉
Jodal
2016-12-08 17:58:55 +08:00
leopku
2016-12-08 18:39:15 +08:00
楼上的正解

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

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

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

多谢各位了,我不太懂的原因还是我的 java 正则表达式捕获分组的原理不清楚,我刚才恶补了一下这个 group 分组原理,解决了问题:(.+)+(-.+), 然后 group(1)就可以了
adv007
2016-12-09 10:15:28 +08:00
js:str.replace(/\-\d+$/,'')就这样啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/326240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX