Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式,它捕获行尾两个字符之间的所有内容_Regex_Groovy - Fatal编程技术网

Regex 正则表达式,它捕获行尾两个字符之间的所有内容

Regex 正则表达式,它捕获行尾两个字符之间的所有内容,regex,groovy,Regex,Groovy,我希望创建一个正则表达式,它可以捕获两个“:”s之间的文本,但前提是它是“最后一组”,例如: \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 应返回: http-builder 需要注意的是,有可能得到如下结果: \--- org::codehaus::groovy::modules::http-builder:http-builder:0.7.1 因为输入不一定遵循约定(基于手头的问题),但所需信息总是在最

我希望创建一个正则表达式,它可以捕获两个“:”s之间的文本,但前提是它是“最后一组”,例如:

\--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1
应返回:

http-builder
需要注意的是,有可能得到如下结果:

\--- org::codehaus::groovy::modules::http-builder:http-builder:0.7.1
因为输入不一定遵循约定(基于手头的问题),但所需信息总是在最后两个“:”s中

我尝试了以下方法(不包括行尾):

1)(?
这意味着:

  • 序列必须以
    开头:
  • 然后开始捕获
  • 捕获所有非冒号的字符
    [^::]*
  • 结束捕获
  • …在下一个冒号处
  • 然后是另一个字符序列
    [^::]*
  • 在该序列之后,行必须结束
    $
    (不再序列)
或者,如果可以使用非贪婪匹配,也可以使用

:(.*?):[^:]*$
*
意味着捕获尽可能多的字符,而
*?
意味着捕获尽可能少的字符。不过,并非所有的正则表达式实现都支持这一点

这意味着:

  • 序列必须以
    开头:
  • 然后开始捕获
  • 捕获所有非冒号的字符
    [^::]*
  • 结束捕获
  • …在下一个冒号处
  • 然后是另一个字符序列
    [^::]*
  • 在该序列之后,行必须结束
    $
    (不再序列)
或者,如果可以使用非贪婪匹配,也可以使用

:(.*?):[^:]*$

*
意味着捕获尽可能多的字符,而
*?
意味着捕获尽可能少的字符。不过,并非所有的正则表达式实现都支持这一点。

如何拆分
并抓取下一个到最后一个段

['org.codehaus.groovy.modules.http-builder:http-builder:0.7.1', 
 /\--- org::codehaus::groovy::modules::http-builder:http-builder:0.7.1/].each { line ->

    assert 'http-builder' == line.split(':')[-2]
}

拆分
并抓取下一个到最后一个片段如何

['org.codehaus.groovy.modules.http-builder:http-builder:0.7.1', 
 /\--- org::codehaus::groovy::modules::http-builder:http-builder:0.7.1/].each { line ->

    assert 'http-builder' == line.split(':')[-2]
}

很好的groovy解决方案。很好的groovy解决方案。你会如何处理具有.Like
groupId:artifactId:packaging:classifier:version
的GAV?对于我的问题,我从来没有这样做过;但你必须找出一些模式,让你知道它是不是这样。你有什么例子吗?你会如何处理具有.Like的GAVe> groupId:artifactId:packaging:classifier:version
对于我的问题,我从来没有这样的版本;但是你必须找出一些模式,让你知道这是不是真的。你有什么例子吗?