【发布时间】:2019-06-08 18:36:04
【问题描述】:
我有一个输入 txt 文件,其中包含上述格式的多行。
JMOD_01 :: This is starting of grouping 2nd KFGJHFG RTIRT DFB SFJKF ERIEFF FJDKF OIOIISD SDJKD
last line ______________ 5564 numerical digits.
This is second starting of grouping 2nd KFGJHFG RTIRT FSFJKF
ERIEFF FJDKF OIOIISD SDJKD
till this end ___________ 021542 some random digits.
我正在尝试读取此文件并以分组方式提取搜索到的模式
这是我尝试过的。 我试过了,对第一场比赛进行分组,它被正确地捕获了。 寻找第二个分组时出现问题,它没有考虑下一行元素。
open(IFH,'<',"file.txt");
while ($line = <IFH>) {
if ($line =~ /^\s*(\w+\_\d*.*)\s*::(.*)/s) {
print "$1\n";
print "$2\n";
}
}
close(IFH);
预期结果:
打印 $1; #这应该给我
JMOD_01
fdgh_6765_546/456
当 , 打印 $2; #那么它应该给我
"This is starting of grouping 2nd KFGJHFG RTIRT DFB SFJKF ERIEFF FJDKF OIOIISD SDJKD last line"
"This is second starting of grouping 2nd KFGJHFG RTIRT FSFJKF
ERIEFF FJDKF OIOIISD SDJKD till this end"
以及何时打印 $3; #那么它应该给
"5564 numerical digits"
"021542 some random digits"
但第二组的实际输出会有所不同: 打印 2 美元; #实际输出
"This is first starting of grouping 2nd KFGJHFG RTIRT DFB SFJKF"
"This is second starting of grouping 2nd KFGJHFG RTIRT FSFJKF"
【问题讨论】:
-
是的,请忽略。考虑以下输入: JMOD_01 :: 这是分组 2nd KFGJHFG RTIRT DFB SFJKF ERIEFF FJDKF OIOIISD SDJKD 最后一行 ______________ 5564 个数字的开始。 fdgh_6765_546/456 :: 这是对第 2 个 KFGJHFG RTIRT FSFJKF ERIEFF FJDKF OIOIISD SDJKD 分组的第二个开始,直到此结束 ___________ 021542 一些随机数字。谢谢指点。
标签: regex perl grouping file-handling multiline