gpt4 book ai didi

bash - 检查有效链接 (URL)

转载 作者:行者123 更新时间:2023-11-29 08:51:07 25 4
gpt4 key购买 nike

我正在阅读这个 other question它有一些非常好的正则表达式,但据我所知,它们中没有一个可以使用 BASH 命令,因为 BASH 命令不支持这种复杂的 rexeg。

if echo "http://www.google.com/test/link.php" | grep -q '(https?|ftp|file)://[-A-Z0-9\+&@#/%?=~_|!:,.;]*[-A-Z0-9\+&@#/%=~_|]'; then 
echo "Link valid"
else
echo "Link not valid"
fi

但这不起作用,因为 grep -q 不起作用 ...

编辑,好的,我刚刚意识到 grep 有一个“扩展正则表达式”(-E) 选项,这似乎使它起作用。但如果有人有更好/更快的方法,我仍然很乐意在这里讨论它。

最佳答案

以下在不使用 grep 的情况下适用于 Bash >= 3.2 版:

regex='(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]'
string='http://www.google.com/test/link.php'
if [[ $string =~ $regex ]]
then
echo "Link valid"
else
echo "Link not valid"
fi

我通过使用 [:alnum:] 简化了您的正则表达式,它也匹配任何字母数字字符(例如 Э 或 ß),但支持因底层正则表达式库而异。这是另一个潜在的简化,它使用 + 而不是 * 和重复序列(尽管您的第二个序列与第一个不同)。

regex='(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]+'

关于bash - 检查有效链接 (URL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3183444/

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