Bourne Shell 有正则表达式验证器吗?

Bourne Shell 有正则表达式验证器吗?

我使用的是封闭网络(即没有连接到互联网)。

我有一个 bourne shell 脚本,要求用户输入与grep -P.

一般来说,我喜欢进行某种形式的输入验证。
有没有办法测试字符串变量以查看它是否是(有效的)正则表达式?
(可以将互联网上的内容复制到我的系统上,但这需要很长时间,而且是 PITA——因此我正在寻找在本地完成此操作的方法。)

答案1

不,但是使用某些工具,测试正则表达式是否可以编译并不困难。

例如,使用 grep: echo | grep -P '['- 退出代码$?将为2,表示发生错误(对于本例,grep 将打印“grep:缺少字符类的终止符 ]" 到 stderr - 如果您只需要退出代码,则可以将 stderr 重定向到 /dev/null)。

退出代码 1 表示正则表达式编译正常,但与输入不匹配。

这些退出代码特定于 GNU grep。其他工具,即使有这样的功能,也可能有不同的退出代码,以及指示特定类型错误的不同方式。

请注意,这与告诉您正则表达式是否正确匹配您想要的内容(而不匹配您不想要的内容)还差得很远。

简而言之,尝试一下并测试退出代码。并了解你的工具。

相关内容