我使用的是封闭网络(即没有连接到互联网)。
我有一个 bourne shell 脚本,要求用户输入与grep -P
.
一般来说,我喜欢进行某种形式的输入验证。
有没有办法测试字符串变量以查看它是否是(有效的)正则表达式?
(可以将互联网上的内容复制到我的系统上,但这需要很长时间,而且是 PITA——因此我正在寻找在本地完成此操作的方法。)
答案1
不,但是使用某些工具,测试正则表达式是否可以编译并不困难。
例如,使用 grep: echo | grep -P '['
- 退出代码$?
将为2
,表示发生错误(对于本例,grep 将打印“grep:缺少字符类的终止符 ]" 到 stderr - 如果您只需要退出代码,则可以将 stderr 重定向到 /dev/null)。
退出代码 1 表示正则表达式编译正常,但与输入不匹配。
这些退出代码特定于 GNU grep。其他工具,即使有这样的功能,也可能有不同的退出代码,以及指示特定类型错误的不同方式。
请注意,这与告诉您正则表达式是否正确匹配您想要的内容(而不匹配您不想要的内容)还差得很远。
简而言之,尝试一下并测试退出代码。并了解你的工具。