regex - sed中的非贪婪(勉强)正则表达式匹配?

标签 regex sed pcre greedy regex-greedy

我正在尝试使用sed清理url行,以便仅提取域。。
所以从:

http://www.suepearson.co.uk/product/174/71/3816/

我想要:
http://www.suepearson.co.uk/
(不管有没有火车斜线,都没关系)
我试过:
 sed 's|\(http:\/\/.*?\/\).*|\1|'

and(转义非贪婪量词)
sed 's|\(http:\/\/.*\?\/\).*|\1|'

但我似乎无法让非贪婪量词(?)起作用,因此它总是匹配整个字符串。

最佳答案

basic和扩展的Posix/GNU regex都不能识别非贪婪量词;您需要一个稍后的regex。幸运的是,这个上下文的Perl regex非常容易获得:

perl -pe 's|(http://.*?/).*|\1|'

关于regex - sed中的非贪婪(勉强)正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51905073/

相关文章:

php preg_split 没有松散的文本,。 : and so forth

python - 从 10-K -- 提取 SIC、CIK,创建元数据表

bash - 使用 awk 从一行中提取值

linux - 动态值的递归替换

linux - 在 Linux 中批量重命名文件

javascript - XRegExp: "Unmatched ' )'"然而一切似乎都是平衡的

regex - 如何使用正则表达式获取字符串中的方法/函数

c - 在保留分隔符的同时在 C 中拆分 char 数组

c++ - 正则表达式替换方法名称

c++ - 在 C++ 中从纯文本生成 HTML(即 br 和 p 标签)