【发布时间】:2013-05-16 17:07:32
【问题描述】:
我有一个字符串 $string,它有行列表,一些以 *.c、*.pdf 等结尾,还有一些没有任何扩展名(这些是目录)。我需要删除除 *.c 行之外的所有行。我如何使用正则表达式来做到这一点?我已经写过要删除 *.c 文件,如下所示,但如何不做呢?
next if $line =~ /(\.c)/i;
任何想法。
谢谢, 沙拉特
【问题讨论】:
标签: perl operator-keyword
我有一个字符串 $string,它有行列表,一些以 *.c、*.pdf 等结尾,还有一些没有任何扩展名(这些是目录)。我需要删除除 *.c 行之外的所有行。我如何使用正则表达式来做到这一点?我已经写过要删除 *.c 文件,如下所示,但如何不做呢?
next if $line =~ /(\.c)/i;
任何想法。
谢谢, 沙拉特
【问题讨论】:
标签: perl operator-keyword
使用unless 而不是if 来反转条件意义。
next unless $line =~ /\.c$/i;
或简单地反转测试:
next if $line !~ /\.c$/i;
此外,您不需要在正则表达式周围加上括号,并且需要 $ 将其锚定到行尾。
【讨论】: