Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex bash中的正则表达式:word类未生成匹配项_Regex_Bash - Fatal编程技术网

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:]