【发布时间】:2011-12-12 22:15:57
【问题描述】:
这一定很明显,但我只是没看到。
我有一个包含数千条记录的文档,如下所示:
Row:1 DATA:
[0]37755442
[1]DDG00000010
[2]FALLS
[3]IMAGE
[4]Defect
[5]3
[6]CLOSED
我已经设法将每条记录分开,现在我正在尝试解析每个字段。
我正在尝试匹配编号的标题,以便我可以提取成功的数据,但问题是我的匹配只在成功时返回“1”,如果不成功,则什么也没有。我尝试申请的任何比赛都会发生这种情况。
例如,应用于每条记录中的一个简单单词:
my($foo) = $record=~ /Defect/;
print STDOUT $foo;
如果每条记录包含“缺陷”,则打印出“1”,如果包含其他内容,则不打印。
或者:
$record =~ /Defect/;
print STDOUT $1;
什么都不打印。
$record =~ s/Defect/Blefect/
另一方面,将“缺陷”替换为“瑕疵”非常好。
我真的很困惑,为什么我的比赛的回报如此糟糕。 任何帮助将不胜感激。
【问题讨论】:
-
匹配后您希望在
$foo中出现什么? -
很多人已经给了你正则表达式问题的答案,但我认为你问的是一个 XY 问题。
I'm trying to match the numbered headers so that I can pull out the data that succeeds them: 你希望你最终的数据结构是什么样的?很可能它可以比循环和正则表达式更快地完成。