(.*?) 和 (.*) 有什么区别?在正则表达式中?

Roc*_*ket 2 regex

对于正则表达式,(.*?)和之间有什么区别(.*)?

Ben*_*n N 6

我使用了regex101.com 上的正则表达式测试器(无从属关系)来测试这些。

(.*?)匹配任意字符 ( .) 任意次数 ( *),尽可能少地匹配正则表达式 ( ?)。您将在任何字符串上获得匹配项,但由于问号,您只能捕获一个空白字符串。当您有更复杂的正则表达式时,此功能会更有用。在这里,解析器根本不需要捕获任何东西来获得匹配:星号允许捕获组中的任意数量的字符,而问号使解析器从输入文本中保存尽可能多的字符以备后用,结果在没有被捕获。

(.*)?捕获一组零次或一次 ( ?)。该组由任意长度 ( *) 的任意字符 ( .) 组成。这也将匹配任何内容,但它将捕获第一行,因为该点匹配除换行符以外的任何内容。