sed中的非贪婪(不情愿)正则表达式匹配?

我正在尝试使用sed清理URL行,以便仅提取域

因此,来自:

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

我想:

http://www.suepearson.co.uk/

(带或不带尾随斜杠都无所谓)

我试过:

sed的| \(http:\/\/.\/.\).\\\1 |'

and(避开非贪婪量词)

sed的| \(http:\/\/.\?\/\).\\\1 |'

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

基本或扩展Posix/GNU正则表达式都不能识别非贪婪量词;你需要一个更晚的正则表达式。幸运的是,这种上下文的Perl正则表达式非常容易获得:

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

发表评论