yae*_*ael 4 linux bash shell-script regular-expression
valid当名称为 时,为什么会打印以下正则表达式hdpworker01?
name=hdpworker01
[[ $name =~ worker[[:digit:]] ]] && echo valid
Run Code Online (Sandbox Code Playgroud)
我尝试做的是valid仅在名称匹配时才打印worker[0-999]。
预期结果示例:
name=worker01:validname=hdpworker01:没有输出默认情况下,正则表达式不锚定到字符串的开头或结尾。这与例如文件名通配模式不同。这意味着表达式可以匹配给定字符串中的任何位置。
要将表达式锚定到字符串的开头,请使用
^worker[[:digit:]]
Run Code Online (Sandbox Code Playgroud)
要将其附加到字符串的末尾并允许一到三个数字,请使用
^worker[[:digit:]]{1,3}$
Run Code Online (Sandbox Code Playgroud)
如果您想匹配worker10但不匹配worker01或worker003(没有零填充的数字),请使用
^worker([0-9]|[1-9][0-9]{1,2})$
Run Code Online (Sandbox Code Playgroud)