gpt4 book ai didi

regex - 为什么 POSIX "printable characters"类不匹配简单字符串?

转载 作者:IT王子 更新时间:2023-10-29 01:01:58 25 4
gpt4 key购买 nike

我编写了以下脚本来测试“可打印字符”字符类,如here所述.

#!/bin/sh

case "foo" in
*[:print:]*) echo "found a printable character" ;;
*) echo "found no printable characters" ;;
esac

我希望这个脚本输出found a printable character"foo" 中至少有一个(事实上,所有)字符是可打印的。相反,它输出 "found no printable characters"。为什么 "foo" 中的字符未被识别为可打印字符?

最佳答案

字符串 [: 只是一个特殊的 inside 括号表达式,括号表达式本身由 [ 引入。所以你的例子应该是:

case "foo" in
*[[:print:]]*) echo "found a printable character" ;;
*) echo "found no printable characters" ;;
esac

如果这看起来很麻烦,请考虑例如如何指定一个应匹配小写字母或数字但不匹配大写字母的模式。

有关详细信息,请参阅 section of the POSIX spec detailing bracket expressions in regular expressions . shell 模式中的括号表达式类似于正则表达式中的括号表达式,除了 !^ 的处理。 (尽管在括号表达式的上下文之外,shell 模式和正则表达式之间还有其他差异)。

关于regex - 为什么 POSIX "printable characters"类不匹配简单字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com