我正在尝试使用正则表达式从字符串中获取子字符串,但由于我的正则表达式无法正常工作而出现错误。谁能帮助我写出正确的答案:
这是我要在其上写正则表达式的模式:
MSM8_BD_V4.3_1-1_idle-Kr_Run3.xlsx
MSM8_BD_V4.3_2-6_mp3-Kr_Run2.xlsx
MSM8_BD_V4.3_Camera_snap-7.xlsx
MSM8_BD_V4.3_Camera_snap-8.xlsx
MSM8_BD_V4.3_Radio_202.16-0.xlsx
我正在尝试获取子字符串的粗体部分。
以下是我尝试过的正则表达式:
my $line = "MSM8939_BD_V4.3_1-1_idle-Kratos_Run3.xlsx";
my ($captured) = $line =~ /MSM8939_BD_V4\.\3\_[d]*(.+?)\w/gx;
print "$captured\n";
[d]
只匹配文字字母d
。您想要\d
不带括号的数字匹配。但是,您似乎也想包含下划线。那会是[\d_]
。
试试这个:
/^MSM8_BD_V4\.3_[\d_]*-?([^-]+)/
如果我在您的输入上运行此代码(例如使用perl -nE 'say $1 if /^MSM8_BD_V4\.3_[\d_]*-?([^-]+)/'
),则会得到以下输出:
1_idle
6_mp3
Camera_snap
Camera_snap
Radio_202.16
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句