此问题在此处已有答案:
Is it possible to do an OR in a bash regular expression?(1个答案)
昨天就关门了。
我尝试从https://mirrors.slackware.com/mirrorlist/获取镜像列表。我有一个regex语句,可以获取所有服务器的列表(http://[a-zA-Z 0 -9-./]*),但我正在尝试找到一种方法,可以仅从特定国家/地区代码(us、ca等)中选择服务器。
我是regex的新手,所以这可能是我很容易忽略的事情。我试过如果|然后陈述,但没有运气。任何帮助将不胜感激。我已经做了很多搜索,以防万一这是一个重复的另一个问题。
我不知道他们说的与我的相似的重复是如何适用的。那是关于bash中的if语句,而不是下载和解析我所要求的信息。
2条答案
按热度按时间kuarbcqp1#
有更有效和优雅的方法来做到这一点,但考虑这是一个关于 *nix命令行有效性的小教程:
字符串
输出
型
要获取额外的方案,可以使用
grep
的 Extended RegExp 特性和-E
标志,即型
Tnx到@Reilas的提示!
你必须将第二个
grep
目标更改为你想要过滤的任何/所有国家代码的列表。用|
字符分隔每个值,如下所示。如果有什么东西停止工作了,那么从左到右执行管道的每一部分,直到你看到问题在哪里。
g0czyy6m2#
我是正则表达式的新手,所以这可能是我忽略的非常容易的事情。
使用 * 非捕获组 *,语法为
(?: )
。这是一个 * 捕获模式 *。
个字符
值得注意的是,还有其他的 * scheme *,即 https、ftp 和 rsync。
的字符串
最后,Wikipedia 和 O'Reilly Media 都提供了关于 * 正则表达式 * 的优秀文本。