Perl如何取指定字符之前的字符

$Data=BRD1_EC2=3.887607(389.999986M,5)R =nail=2,17 value=0ohm PN=ZNO30V4.2JCMS1812 * TOP

问题: 如何取"_"和最近的"="之间的所有的字符,EC2是个变量.

分值不够,下次补给你

  取指定字符之前的字符的方法是:
  perl -nle 'if(/^start:/ or /^end:/){ # 匹配 flag
  /([^:]+:)(.*)?\(?/; # 正则捕获$1,$2,其中$1是start: 或 end:,$2是'('之前的部分
  if($1 eq "start:"){push @{$hash{$1}},$2;$s=$2;} # 如果$1是start:的话,存入key为$1,值为$2的hash中,另外,再保留一份$2给临时变量$s,
  else{$hash{$s} = $1.$2} # 如果$1不是start:,即是end:, 则存入key为$s,值为$1.$2到hash中
  };
  END{
  use Data::Dumper;
  print Dumper \%hash; # 可以看下hash的结构是什么,应该会理解下面foreach的block部分
  foreach (sort {$a cmp $b} @{$hash{"start:"}}){
  print "start: ",$_,"\t",$hash{$_}
  }
  }' file
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-05
方法有三种,一般可以使用字符串搜索找到位置,然后获取子串,方法二是模式匹配,我说说方法三,使用split,例如你的例子:

$Data='BRD1_EC2=3.887607(389.999986M,5)R =nail=2,17 value=0ohm PN=ZNO30V4.2JCMS1812 * TOP';

($s1,$s2)=split($Data,'_');
($s1)=split($s2,'=');
print $s1;本回答被提问者采纳

Perl如何取指定字符之前的字符
取指定字符之前的字符的方法是:perl -nle 'if(\/^start:\/ or \/^end:\/){ # 匹配 flag \/([^:]+:)(.*)?\\(?\/; # 正则捕获$1,$2,其中$1是start: 或 end:,$2是'('之前的部分 if($1 eq "start:"){push @{$hash{$1}},$2;$s=$2;} # 如果$1是start:的话,存入key为$...

如何用perl来截取每行前8个字?
第一种方法:读取之后把 \/\/后面的内容去掉,s\/\\\/\\.*$\/\/\/g;第二种方法:读取之后只取每行的前八个字符,substr($line,0,8) 或者正则 \/(^.{8})\/

perl 怎么获取特定字符前面的字符串
re = 'http:\/\/music1.baidu.com\/music1-abcdefghijk.mp3?key=20150310091012';if ($re=~m\/^(.*?)\\?\/){ print $1;}

perl编程 如何提取每段前几个字符
my @strings = ($text =~ \/\\n{2,}\\s+(\\w+)\/g);

如何用perl语音匹配如下字符串最后一个‘.’之前的部分
s=~m\/(.*)\\.\/;

perl 截取字符串中指定的两字符之间的内容
string = '...|||...||...||...';@data = split \/\\|\/, $string;shift @data; pop @data; $result = join '|', @data;print $result; #||...||...|

PERL正则表达式怎么提取两个特定符号之间的内容
和 直接用正则捕获,看看结果有木有!!\/usr\/bin\/perl -w use strict;use warnings;my $a = 'aligned = 11.8424277753889 (426327399914 frames)';my $b = (split \/\\s+=\\s+|\\s+\\(\/, $a)[1];print $b,"\\n";if ($a =~ \/=\\s+([\\d\\.]+)\/){ print $1,"\\n";} ...

perl取文本中一部分数据。
while ( <FILE> ) { next unless $_ =~ \/^Administrative Contact\/;my $end = undef;while ( ! $end ) { my $line = <FILE> ;end = 1 if $line =~ \/^Technical Contact\/;print $line unless $end } }

perl提取字符串的指定部分
str = "real 3m27.496s";str =~ \/(\\d+)m([\\d\\.]+)s\/;my ( $min, $sec ) = ( $1, $2 );

如何用perl语言实现查找某一串特定的字符
如果要我举个例子的话,$string="123abc456...",你要找的"3abc4"是否存在,如果存在输出存在:if($string=~m\/3abc4\/) {print("true");}那么结果就会输出true。你用index函数可以让你知道是从2号位开始这个字符串的,又比如。总之,去google或百度查下 perl正则表达式,再查查相关函数即可。

相似回答