【发布时间】:2016-03-17 20:46:07
【问题描述】:
如果我有文件名列表,例如:
member_1235435.dat
member_1243533.txt
member_1_1_2015.txt
member_1_3_2015_rejected.dat
除了_rejected 之外,我如何匹配 member_{number}.extension 模式中的所有内容?
到目前为止,我是这样的:
^Member_.*.*
我原以为会是这个样子,但它不起作用。
^Member_.*(?!_rejected).*
我在评论中尝试了第一个答案
24646-MBPRS-Username:myapp Username$ ./src/myapp launcher:local ~/Desktop/myfilesdirectory /^member_(?:.(?!_rejected))*$/
-bash: !_rejected: event not found
我试图逃跑!签名,这就是我得到的
24646-MBPRS-Username:myapp Username$ ./src/myapp launcher:local ~/Desktop/myfilesdirectory /^member_(?:.(?\!_rejected))*$/
-bash: syntax error near unexpected token `('
仅供参考,该模式将通过命令行参数
【问题讨论】:
-
你是否使用了不区分大小写的修饰符?
-
是的。我正在使用不敏感的修饰符
-
^member_(?:.(?!_rejected))*$- regex101.com/r/cR9bF3/1 -
@JoshCrozier 我尝试运行它,它失败了:24646-MBPRS-Username:myapp username$ ./src/myapp launcher:local ~/Desktop/myfilesdirectory /^member_(?:.(?! _rejected))*$/ 结果 --> -bash: !_rejected: event not found
-
在 bash 中,文件名模式不是正则表达式。它们是“球体”。 (即使可以使用正则表达式,例如在
[[...]]内部,也不会实现前瞻断言。但是,您可以使用扩展的 glob。
标签: php regex bash pattern-matching