我有一些URL链接,并尝试使用regex替换链接末尾的所有非整数值。
URL类似于
https://some.storage.com/test123456.bucket.com/folder/80.pngRegex我试着使用:
Integer.parseInt(string.replaceAll(".*[^\\d](\\d+)", "$1"))该正则表达式的输出为"80.png",我只需要"80“。我也试过这个工具- https://regex101.com。正如我所看到的,主要的问题是".png“与我的正则表达式不匹配,然后,在替换之后,这个部分添加到匹配组中。
我完全是个新手,所以我恳请你帮忙。
发布于 2020-01-12 20:32:27
你可以用
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+).*|.+" )对模式进行预处理,则可以支持换行。
https://stackoverflow.com/questions/59702600
复制相似问题