我有一个名为pkg-name.0.15.0-6.x86_64.rpm
的rpm
包,我想从中提取两个字符串:
1.只有名称,没有版本、发行版或体系结构。
1.然后,我想提取带有版本和发行版的名称。
我尝试了下面的代码,但我没有得到任何匹配,我不知道为什么
fullRpmName = "pkg-name.0.15.0-6.x86_64.rpm"
def matcher = (fullRpmName =~ /((.*)\\.\\d+\\.\\d+.\\d+-\\d+\\..*).x86_64\\.rpm/)
println matcher.group(1)
println matcher.group(2)
2条答案
按热度按时间ar7v8xwq1#
我修改了正则表达式以匹配包命名约定,您可以看到一个工作示例here:
xghobddn2#
您可以使用
请参阅Groovy demo online.请参阅regex demo。
^
-字符串开始((.*?)\..*)
-组1:(.*?)
-组2:除换行符以外的任何零个或多个字符,尽可能少\.
-一个点.*
-任何零个或多个字符,尽可能多的换行符字符除外\.x86_64\.rpm
-一个.x86_64.rpm
字符串。^(([^.]*)(?:[-.]\d+)*)\.x86_64\.rpm
(请参阅demo)这样的正则表达式要复杂一些:[^.]*
-零个或多个字符(点除外)(?:[-.]\d+)*
--
或.
得零次或多次重复,后跟一个或多个数字.