对于以下字符串,我试图在字符串包含主线时提取“主线”,如果不包含主线则在末尾提取数字。我正在使用Java。
例如,对于以下字符串,我只想要最后的数字
Solaris10NBngp-bwm1.1.X // want 1.1.x
Solaris10NBbytel2.0.0.0x // want 2.0.0.0x
Solaris10NBbwm1.2.X // want 1.2.X
Solaris10NBoam_bwm1.4.0.X // want 1.4.0X
Solaris10NBoam1.7.X // want 1.7.X
主要示例:
Solaris10NBngp-bwm_mainline // want mainline
LinuxNBdaypass_mainline // want mainline
LinuxNBngp_mainline // want mainline
这是否可以使用正则表达式,如果是这样,任何人都知道如何做到这一点? : - )
答案 0 :(得分:2)
Solaris10NBngp-bwm1.1.X // want 1.1.x
Solaris10NBbytel2.0.0.0x // want 2.0.0.0x
Solaris10NBbwm1.2.X // want 1.2.X
Solaris10NBoam_bwm1.4.0.X // want 1.4.0X
Solaris10NBoam1.7.X // want 1.7.X
对于上述输入,
expectedString = yourString.replaceAll("[^.]+(\\d+\\.)","$1");
答案 1 :(得分:0)
如果字符串始终以Solaris10NB
开头,请尝试使用以下表达式:Solaris10NB[\w\-]+(\d.*)
。
然后使用Matcher#group(1)
提取第一组。
答案 2 :(得分:0)
试试这个正则表达式
([0-9.]+x) +.*$
NB假设评论是字符串的一部分
否则
[0-9.]+x)$
答案 3 :(得分:0)
查看此表达式是否有效
(\d\.)+\d?X$
答案 4 :(得分:0)
试试这个正则表达式:
/(mainline)$|(\d+\..*)\s*/
如果在字符串结尾处找到mainline
,则$1
变量将包含值mainline
。如果找到版本号,则会填充$2
变量,$1
将为空/空。