如何使用具有特定模式的perl获取子字符串?

如何使用具有特定模式的perl获取子字符串?,perl,substring,Perl,Substring,我试图从某个字符串中得到一个子字符串。如下图所示: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc -I. -I./ --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DH

我试图从某个字符串中得到一个子字符串。如下图所示:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc -I. -I./ --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DHAVE_AV_CONFIG_H -arch armv7 --sysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -mcpu=cortex-a8 -fPIC -g -MMD -MF libavcodec/arm/ac3dsp_armv6.d -MT - -c -o - libavcodec/arm/ac3dsp_armv6.S -E

我想把string
ac3dsp_armv6.S
拿出来,如何使用Perl来做呢?

由于没有足够的信息,很难回答这个问题。提取字符串的方法有很多,但不能保证是泛型的

字符串是否为固定宽度格式?可能不会

这个备受追捧的子字符串有什么独特之处,可以用来提取它

你考虑过使用正则表达式吗

并应提供实现所述目标所需的专有技术。

一种可能的方法

my $string = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc -I. -I./ --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DHAVE_AV_CONFIG_H -arch armv7 --sysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -mcpu=cortex-a8 -fPIC -g -MMD -MF libavcodec/arm/ac3dsp_armv6.d -MT - -c -o - libavcodec/arm/ac3dsp_armv6.S -E'

my ($result)=$string=~m#/(.+?)\s+\-E\s*\z#gis;
print $result;

抱歉误解,字符串中唯一更改的是*.s,如ac3dsp_armv6.s或ac3dsp_armv7.s。对于误解,字符串中唯一更改的是*.s,如ac3dsp_armv6.s或ac3dsp_armv7.s
  my $string = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc -I. -I./ --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DHAVE_AV_CONFIG_H -arch armv7 --sysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -mcpu=cortex-a8 -fPIC -g -MMD -MF libavcodec/arm/ac3dsp_armv6.d -MT - -c -o - libavcodec/arm/ac3dsp_armv6.S -E';
  my @r = split(/ / ,( split /\//, $string )[-1]);
  print $r[0];