Regex bash中的正则表达式:word类未生成匹配项
我为此苦恼了好几个小时。为什么会这样Regex bash中的正则表达式:word类未生成匹配项,regex,bash,Regex,Bash,我为此苦恼了好几个小时。为什么会这样 $ if [[ "test" =~ \w+ ]]; then echo "yes"; else echo "no"; fi no $ if [[ "t" =~ \w+ ]]; then echo "yes"; else echo "no"; fi no $ if [[ "w" =~ \w+ ]]; then echo "yes"; else echo "no"; fi yes $ if [[ "wwwww" =~ \w+ ]]; then echo "
$ if [[ "test" =~ \w+ ]]; then echo "yes"; else echo "no"; fi
no
$ if [[ "t" =~ \w+ ]]; then echo "yes"; else echo "no"; fi
no
$ if [[ "w" =~ \w+ ]]; then echo "yes"; else echo "no"; fi
yes
$ if [[ "wwwww" =~ \w+ ]]; then echo "yes"; else echo "no"; fi
yes
这就好像转义的反斜杠什么也没做。为什么会这样?我注意到将正则表达式用引号括起来并没有帮助:
$ if [[ "test" =~ "\w+" ]]; then echo "yes"; else echo "no"; fi
no
如果有必要的话,这一行在bash函数中,它来自
.sh
文件并在zsh上运行。bash表示它的字符类稍微不同(与您期望的不同)。文件可用。以下方面应起作用:
if [[ "test" =~ '^[[:alnum:]]+$' ]]; then echo "yes"; else echo "no"; fi
Bash表示的角色类与您期望的稍有不同。文件可用。以下方面应起作用:
if [[ "test" =~ '^[[:alnum:]]+$' ]]; then echo "yes"; else echo "no"; fi
bash中不存在
\w
字符类。bash中不存在\w
字符类。非常好--谢谢。我很惊讶我在互联网上找不到这一点。$if[[[“t!”(\2g/*2”=~[:alnum:]+];然后回显“yes”;否则回显“no”;fi
yes
这个[:alnum:]
似乎太慷慨了。使用'^[:alnum:]]+$”
如果希望整个字符串为字母数字-当前版本仅检查字符串中是否存在一个或多个[:alnum:][/code>。非常好--谢谢。我很惊讶我在互联网上找不到这一点。$if[[“t!”(\2g/*2”=~[:alnum:][+];然后回显“是”;否则回显“否”;fi
是[[:alnum:]
似乎太慷慨了。如果希望整个字符串都是字母数字,请使用'^[:alnum:]+$”
——当前版本仅检查字符串中是否存在一个或多个[:alnum:]
。