我想读取方括号内的位,并且也想要方括号。
棘手的部分是class4。
sample1[1]
不是一个位。位只在行末。
例子:
File1.txt
class1->Signal = sample1_sample2.sample3_sample4[4:4];
class2->Signal = sample1.sample2.sample3_sample4_sample5[2];
class3->Signal = sample1+sample2_sample3.sample4.sample5sample7[7:3];
class4->Signal = sample1[1]+sample2_sample3.sample4.sample5sample7[7:3];
期望结果:
class1 bit = [1:2]
class2 bit = [2]
class3 bit = [7:3]
class4 bit = [7:3]
我使用正则表达式,但方括号无法读取。
[] = 用于字符集。
... = 除换行符外的任何字符。
参考:https://www.geeksforgeeks.org/perl-regex-cheat-sheet/
我的代码:
my $file = "$File1.txt";
my $line;
open (FILE,"<", $file) or die "Cannot open a file: $!";
while (<FILE>){
my $line = $_;
if ($line =~ m/[..]/){
$line = $&;
}
}
close (FILE);
只显示结果:.........
希望你们可以通过提供想法来帮助我。谢谢。
^([^-]*)->.*?(\[[^]]*\]);
一次,然后告诉我结果如何。干杯。 - RavinderSingh13;
之前。但是单词中间也可能会有方括号。 - DM 256perl -nE 'say "$1 bit = $2" if /(class\d+)->Signal.*(\[[:\d]+\])\s*;/' file.txt
- jhnc