相关疑难解决方法(0)

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

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

所以来自:

http://www.suepearson.co.uk/product/174/71/3816/
Run Code Online (Sandbox Code Playgroud)

我想要:

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

(有或没有火车斜线,没关系)

我试过了:

 sed 's|\(http:\/\/.*?\/\).*|\1|'
Run Code Online (Sandbox Code Playgroud)

和(逃避非贪婪量词)

sed 's|\(http:\/\/.*\?\/\).*|\1|'
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使非贪婪量词工作,所以它总是最终匹配整个字符串.

regex pcre sed greedy regex-greedy

393
推荐指数
10
解决办法
23万
查看次数

为什么我的Perl就地脚本即使失败也会以零退出代码退出?

我有一个单行的Perl搜索和替换,看起来像这样:

perl -p -i -e 's/foo/bar/' non-existent-file.txt
Run Code Online (Sandbox Code Playgroud)

因为该文件不存在(这不是有意的,但这是自动化构建脚本的一部分,所以我想对此加以保护),Perl退出并出现以下错误:

Can't open non-existent-file.txt: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

但是,退出代码仍为零:

echo $?
0
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?我应该修改脚本还是调用Perl的方式?我天真地假设,因为Perl找不到文件,所以它将以非零代码退出。

regex perl replace

5
推荐指数
2
解决办法
408
查看次数

标签 统计

regex ×2

greedy ×1

pcre ×1

perl ×1

regex-greedy ×1

replace ×1

sed ×1