如何检查字符串是否来自此格式?

时间:2018-05-22 19:42:55

标签: bash

如何检查bash中的字符串是否来自此格式:exerciseNumber{N}Published {N} 是某个自然数。

例如:

for file in `ls`; do
  if (( `isInRequiredFormat ${file}` )); then
    echo Yes.
  fi
done

我问如何编写函数" isInRequiredFormat"根据我写的格式。

2 个答案:

答案 0 :(得分:3)

只需使用(扩展)模式匹配:

shopt -s extglob
for file in *; do
  if [[ $file = exerciseNumber@(0|[1-9]*([0-9]))Published ]]; then
    echo yes
  fi
done

@(x|y)匹配xy*(x)匹配0次或多次x次匹配。因此@(0|[1-9]*([0-9]))匹配0或者匹配非零数字,可选地后跟任意数量的数字。

答案 1 :(得分:0)

你可以使用正则表达式。

for file in `ls`; do
  if [[ $file =~ exerciseNumber[:digit:]*Published ]]; then
    echo Yes.
  fi
done