Pattern.compile( "(*):?")

And*_*eas 1 java regex

我正在尝试理解以下代码:

Pattern.compile("(.*?):")
Run Code Online (Sandbox Code Playgroud)

我已经做了一些关于它可能意味着什么的研究,但我不太明白:

根据java文档,*意味着0次或更多次,而?意味着一次或根本不意味着.

另外,':'是什么意思?

谢谢

das*_*ght 5

这被称为不情愿的量词.星号和问号*?一起表示"零次或多次,没有匹配输入中的更多字符而不是需要".这可以防止点.表达式匹配:输入中的后续冒号.

匹配相同序列的更好表达式是[^:]*:,因为它可以让您避免回溯.这是一篇解释原因的文章链接.