我是perl的新手,需要你的帮助。
我正在读取目录中文件的内容。
我需要从包含std::string
示例字符串:
*.dat
需要提取:
1) # ** Template Name: IFDOS_ARCHIVE.dat
2) # ** profile for IFNEW_UNIX_CMD.dat template **
3) # ** Template IFWIN_MV.dat **
我的代码:
1) IFDOS_ARCHIVE.dat
2) IFNEW_UNIX_CMD.dat
3) IFWIN_MV.dat
我的正则表达式无效。 你有什么建议?
答案 0 :(得分:1)
我觉得你会用以下的东西做得更好:
while (<$jobprofile>) {
if ( /(\S+)\.dat/ ) {
print "$1\n";
}
}
(while
用于确保您解析每一行)
正则表达式查找一系列非空白字符(\S
),后跟.dat
。
围绕\S+
的括号将该部分的匹配捕获到特殊变量$1
中。
答案 1 :(得分:0)
试试这个
open my $fh,"<","file.txt";
while (<$fh>)
{
next if /^\s+/; #skip the loop for empty line
($match) = /\s(\w+\.dat)/g; # group the matching word and store the input into the $match
print "$match\n";
}
或者只是尝试perl one liner
perl -ne' print $1,"\n" if (m/(\w+\.dat)/) ' file.txt
或者你在linux上工作尝试linux命令来做到这一点
grep -ohP '\w+\.dat' one.txt
o
仅显示匹配的元素
h
用于显示无文件名的输出
P