TCL - 创建一个正则表达式,它将 return 重复字符串中的第一个匹配项

TCL - Create a regexp which will return the first match in a repeating string

我正在尝试创建一个正则表达式来捕获第一次出现的重复字符串。

字符串是"list"个RSA证书,连续。我只对第一个感兴趣。

字符串看起来像:

-----BEGIN CERTIFICATE-----
CERT1..........
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CERT2............
-----END CERTIFICATE-----
...
...
...

我尝试了以下内容的变体,但返回的是完整列表而不是第一项:

set match [regexp {(-----BEGIN CERTIFICATE-----.*-----END CERTIFICATE-----$).*} $certs matchAll firstCert]

您需要使用非贪婪 .*? 量词。

set match [regexp {(-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----)} \
    $certs matchAll firstCert]

参考文献re_syntax manual page