我尝试了(.+?):(.+)((?::).+)?来测试以下内容:androidx.hilt:hilt-compiler
(.+?):(.+)((?::).+)?
androidx.hilt:hilt-compiler
androidx.hilt:hilt-compiler:1.2.3
我希望第二个是
我试过不同的正则表达式,但都不起作用。
izkcnapc1#
您可以将模式编写为:
^([^:\n]+):([^:\n]+)(?::([^\n:]+))?$
^
([^:\n]+)
:([^:\n]+)
:
(?:
:([^\n:]+)
)?
$
Regex demo
1条答案
按热度按时间izkcnapc1#
您可以将模式编写为:
^
字符串开始([^:\n]+)
组1,匹配1+个字符,但不匹配:或换行符:([^:\n]+)
匹配:
,然后是匹配1+个字符的组2,而不是:或换行符(?:
非夺获组:([^\n:]+)
匹配:
,然后是匹配1+个字符的组3,而不是:或换行符)?
关闭非捕获组并将其设为可选$
字符串结束Regex demo