我在文件夹中获取 .log 和 _log 之类的文件,我可以使用/*.log$/选择 .log 文件,但无法找到 _log 文件。
需要一个正则表达式模式,它将从指定文件夹中获取两种类型的文件。
最佳答案
您的问题被标记为“perl”和“linux”。我在这里假设您正在谈论 Perl 风格的正则表达式,因为看起来这就是您在示例片段中显示的内容。
*.
序列是错误的。
让我们专注于您要匹配的内容。您想要匹配以点结尾且后跟文字字符“log”的任何文件名。您还希望匹配任何以下划线结尾、后跟文字字符“log”的文件名。你真的不应该关心最后一个点或下划线之前的“任何东西”。所以正则表达式可能会更好地写成这样:
/[._]log$/
请注意,我们甚至不用理会点星号。它在这种情况下没有帮助。
如果您希望您的模式也匹配文字字符“log”后面可以选择跟随一个整数序列的文件(您的问题中未提及,但在您的后续评论之一中讨论),您可以这样写这个:
/[._]log\d*$/
这里的“星标”很有帮助;它允许零个或多个数字夹在“g”和字符串末尾之间。
关于linux - 模式匹配日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994159/