具有多种可能选项的正则表达式

时间:2015-01-18 06:29:05

标签: regex perl

我正在努力实现这一目标:

此脚本应读取当前目录并打印以消息开头的任何文件的内容,并且可能后跟句点和数字。

opendir(CURRENT, ".");
@message_file = grep(/message(\.\d+)?/, readdir (CURRENT));
closedir(CURRENT);

foreach $message_file (@message_file) {
        open (FILE, $message_file);
        while(<FILE>){
             print;
}
close(FILE);
}

我的代码仍打印出message.txt等文件。我试图找出正确的语法,不包括这样的文件,只有那些有句号和数字的文件。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:3)

  

我试图弄清楚正确的语法,不包括那些文件,只包含句点和数字之后的文件。

您可以使用此否定前瞻基于正则表达式:

/^message(?!\.\D)/
  • (?!\.\D)表示如果messages后跟一个点和非数字,则匹配失败。
  • 最好使用锚^作为开始