我想解析使用Perl会出现在课程目录中的数据,但我正在努力使我的正则表达式正常工作。为什么不是?在正则表达式中工作?
数据的几样行是如下所示:
Course description goes here; There might be more text; 3 hours of lecture, 2 hours of laboratory. Prerequisite: None
Another course description is here; 3 hours of lecture and laboratory. Prerequisite: None
More description; 4 hours of laboratory. Prerequisite: None
我想捕捉的完整描述,那么小时(以后我会处理(之前的最后一个分号一切)什么时候与讲座相匹配或实验室)。正则表达式我试图用是这样的:
/^(.*)\; *([0-9]).*?(lecture|laboratory).*?([0-9])?.*$/
看来工作,直到([0-9])?
。我认为这将匹配第二小时数(如果有的话),然后.*
匹配其余的线,但事实并非如此。相反,最后的.*
与第二个小时以及之后的所有内容相匹配。
为什么?
的使用不符合第二小时,如果它在那里。这是一个贪婪的问题,还是我以其他方式犯了一个错误?
一个Perl正则表达式不必匹配整个字符串,所以你不需要。* $在最后。 – 2012-02-27 17:34:02
而不是只有一个空的空间,我建议把\ s。它更清晰。 – 2012-02-28 02:56:09