You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl正则如何精准捕获两组特定双下划线间的目标字符串?

Perl正则捕获双下划线间指定内容的问题解决

你的问题是用正则捕获CL\d+__之后第一组双下划线之间的字符串,但原正则因为贪婪匹配,抓到了最后一组双下划线前的内容。下面给你两种解决办法:

方法1:使用非贪婪匹配

原正则里的\w+是贪婪模式,会尽可能多匹配字符(包括单下划线),直到遇到最后一个__才停止。把它改成非贪婪的\w+?,就会匹配到第一个__就终止:

my $target_str = "DFD_20220913_121409_strix1a0__z1_erx_adm__CL1695331__RTL_Dfdsg4__regression__df_umc_nbio_hubs_gfx__220913_150718";
if ($target_str =~ /CL\d+__(\w+?)__/) {
    print "捕获结果:$1\n"; # 输出 RTL_Dfdsg4
}

方法2:使用否定前瞻的字符匹配

如果需要更精确控制(比如中间可能出现非\w的字符),可以用否定前瞻来匹配不包含双下划线的内容:

my $target_str = "DFD_20220913_121409_strix1a0__z1_erx_adm__CL1695331__RTL_Dfdsg4__regression__df_umc_nbio_hubs_gfx__220913_150718";
if ($target_str =~ /CL\d+__((?:(?!__).)+)__/) {
    print "捕获结果:$1\n"; # 输出 RTL_Dfdsg4
}

这里(?:(?!__).)+表示:循环匹配单个字符,只要这个字符不是__的开头,直到遇到__为止。

内容的提问来源于stack exchange,提问作者David Gauthier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:01:11