使用正则表达式在列表命令中匹配一个字符两次:为什么匹配?
Matching a character twice in a list command with regexp: why does this match?
我想匹配序列 job_ + 两个数字 + .sh 所以我使用了这个正则表达式:ls job_[0-9]{2,}.sh
然而结果是:
job_0.sh job_1.sh job_2.sh job_3.sh job_4.sh job_5.sh
job_6.sh ob_7.sh job_8.sh job_9.sh job_12.sh job_22.sh
job_32.sh job_42.sh job_52.sh job_62.sh job_72.sh job_82.sh job_92.sh
正则表达式 return 不知何故:job_ + 一个数字 + .sh
这是一个错误还是我遗漏了什么?
谢谢
Shell glob 模式不是正则表达式,因此 {2,}
不起作用。您可以使用:
ls job_[0-9][0-9].sh
Shell glob 模式扩展 job_[0-9]{2,}.sh
为:
- 文字
job_
- 一个数字
0-9
- 一个数字
2
- 文字
.sh
这就是为什么您在 .sh
之前获取带有 2
的所有文件名的原因
我想匹配序列 job_ + 两个数字 + .sh 所以我使用了这个正则表达式:ls job_[0-9]{2,}.sh
然而结果是:
job_0.sh job_1.sh job_2.sh job_3.sh job_4.sh job_5.sh
job_6.sh ob_7.sh job_8.sh job_9.sh job_12.sh job_22.sh
job_32.sh job_42.sh job_52.sh job_62.sh job_72.sh job_82.sh job_92.sh
正则表达式 return 不知何故:job_ + 一个数字 + .sh
这是一个错误还是我遗漏了什么?
谢谢
Shell glob 模式不是正则表达式,因此 {2,}
不起作用。您可以使用:
ls job_[0-9][0-9].sh
Shell glob 模式扩展 job_[0-9]{2,}.sh
为:
- 文字
job_
- 一个数字
0-9
- 一个数字
2
- 文字
.sh
这就是为什么您在 .sh
2
的所有文件名的原因