我似乎无法找出正确的正则表达式(java风格)来为这些字符串提取版本部分
EXPECTATION
spring-aop-4.2.5.RELEASE.jar -> 4.2.5
rumi-1.js -> 1
BouncyCastle-Net-12-1.dll -> 12-1
使用以下java正则表达式,我会在行尾
处获得句点\\b\\d[\\d|\\.|\\-]*\\b
任何人都可以提出更好的正则表达式吗?
FAULTY_RESULT
spring-aop-4.2.5.RELEASE.jar -> 4.2.5.
rumi-1.js -> 1.
BouncyCastle-Net-12-1.dll -> 12-1.
答案 0 :(得分:2)
数字,后跟零个或多个点/破折号和数字,前面没有单词字符:
(?<!\w)\d+([.-]\d+)*
在java中,它可以在一行中完成:
String version = packageName.replaceAll(".*?((?<!\\w)\\d+([.-]\\d+)*).*", "$1");
这里,当正则表达式匹配整个输入时,捕获目标术语,替换术语返回目标(通过捕获的组)。
答案 1 :(得分:0)
可能你可以更好地表达这个表达,但这是我的第一次尝试。注意。你需要看看这个表达。
(\d+(\.?|-?|\d)+\d|\d)
问候。
答案 2 :(得分:-1)
尝试这样的事情:
\b\d[\d|.|\-]*\d\b
反斜杠加倍仅进入String
常数:
"\\b\\d[\\d|.|\\-]+*\\d\\b"
然而,这与单个数字版本不匹配......