首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将URL字符串替换为位于该字符串末尾的整数字符

问将URL字符串替换为位于该字符串末尾的整数字符
EN

Stack Overflow用户
提问于 2020-01-12 09:40:39
回答 1查看 63关注 0票数 1

我有一些URL链接,并尝试使用regex替换链接末尾的所有非整数值。

URL类似于

代码语言:javascript
复制
https://some.storage.com/test123456.bucket.com/folder/80.png

Regex我试着使用:

代码语言:javascript
复制
Integer.parseInt(string.replaceAll(".*[^\\d](\\d+)", "$1"))

该正则表达式的输出为"80.png",我只需要"80“。我也试过这个工具- https://regex101.com。正如我所看到的,主要的问题是".png“与我的正则表达式不匹配,然后,在替换之后,这个部分添加到匹配组中。

我完全是个新手,所以我恳请你帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 20:32:27

你可以用

代码语言:javascript
复制
String result = string.replaceAll("(?:.*\\D)?(\\d+).*", "$1");

见regex演示。

注意:如果没有匹配,则result将等于string值。如果您不想要这种行为,而不是"(?:.*\\D)?(\\d+).*",请使用"(?:.*\\D)?(\\d+).*|.+"。

详细信息

  • (?:.*\D)? -一个可选的(必须是可选的,因为的组1模式也可能在字符串的开头匹配)
    • .* -除换行字符以外的任何0+字符,尽可能多
    • \D -一个非数字的

​

  • (\d+) -第1组:任意一个或多个数字
  • .* -除换行字符以外的任何0+字符,尽可能多

替换是$1,它是对Group 1值的反向引用,实际上是字符串中没有换行符的最后一个1+数字块。

如果您用(?s)内嵌的DOTALL修饰符(即"(?s)(?:.*\\D)?(\\d+).*|.+" )对模式进行预处理,则可以支持换行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59702600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档