java - 正则表达式提取软件版本

标签 java regex version

我尝试使用这个正则表达式 (?!\\.)(\\d+(\\.\\d+)+)([-.][a-zA-Z]+)?(?! [\\d.])使用Java代码从短文本中提取软件版本号,如下:

... Dashbuilder before 0.6.0.Beta allows remote  ... another version 0.6.1 which ...

但是,我只能提取不带字母 Beta 的 0.6.00.6.1

更新 有时,软件版本带有数字和字符。我如何更新我的正则表达式才能提取软件版本,例如带字母的数字 (0.6.0.beta) 或仅数字 (0.6.1), 另外,如果我想使用正则表达式提取位于版本号之前的术语 before 该怎么办?

最佳答案

您可以使用

((?:\d.)+)

测试字符串

... Dashbuilder before 0.6.0.Beta allows remote  ...

比赛信息

MATCH 1
1.  [23-29] `0.6.0.`

演示:https://regex101.com/r/pW8gO5/1

<小时/>

编辑

要在0.6.0.Beta之前提取,请使用:

(\b\w+\s(?:\d.)+\w+\b)

测试字符串

... Dashbuilder before 0.6.0.Beta allows remote  ...

比赛信息

MATCH 1
1.  [16-33] `before 0.6.0.Beta`

演示:https://regex101.com/r/pW8gO5/2

<小时/>

编辑2

您可以使用?来匹配可选的before单词:

((?:before)?\s(?:\d.)+\w+\b)

测试字符串

... Dashbuilder before 0.6.0.Beta allows remote  ...

... Dashbuilder 0.6.0.Beta allows remote  ...

比赛信息

MATCH 1
1.  [16-33] `before 0.6.0.Beta`
MATCH 2
1.  [69-80] ` 0.6.0.Beta`

演示:https://regex101.com/r/pW8gO5/3

<小时/>

编辑3

也进行了更新以匹配版本。

((?:before)?\s(?:[\d.])+[\w-]+)\b

测试字符串

... Dashbuilder before 0.6.0.Alpha allows remote  ...
... Dashbuilder before 0.6.0.Beta allows remote  ...
... Dashbuilder before 0.6.0.Beta allows remote  ...
... Dashbuilder before 0.6.0 allows remote  ...
... Dashbuilder before 0.6.0.SNAPSHOT allows remote  ...
... Dashbuilder before 0.6.0.RC allows remote  ...
... Dashbuilder before 0.6.0-RELEASE allows remote  ...

比赛信息

MATCH 1
1.  [16-34] `before 0.6.0.Alpha`
MATCH 2
1.  [70-87] `before 0.6.0.Beta`
MATCH 3
1.  [123-140]   `before 0.6.0.Beta`
MATCH 4
1.  [176-188]   `before 0.6.0`
MATCH 5
1.  [224-245]   `before 0.6.0.SNAPSHOT`
MATCH 6
1.  [281-296]   `before 0.6.0.RC`
MATCH 7
1.  [332-352]   `before 0.6.0-RELEASE`

演示:https://regex101.com/r/pW8gO5/4

关于java - 正则表达式提取软件版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966282/

相关文章:

regex - 允许方括号的正则表达式

正则表达式查找长度为 n 的重复数

Android 获取 Fragment 中的 VersionName

version-control - 如何使用 Mercurial 进行文本文档的版本控制?

java - 在*多线程* Swing 应用程序中使用 Hibernate 进行 session 管理

php - 如何正确转义字符串以用于 PHP 中的正则表达式?

java - 为什么我的变量不会被 Autowiring ?

java - 在 Gradle 项目中获取 Kotlin/Java 代码中的版本

java - 数据库连接超时

java - "Simple"Trie实现