2017-06-02 154 views
1

我在看一条线我编打开的文件,并显示与.p非贪婪正则表达式匹配

First sentence. Another. One. Text continues

现在我想用replacement.替换字符串First sentence.但是,命令

.s/.*\./replacement./

作用在贪婪方式,即,它取代First sentence. Another. One.通过replacement,而不是强制根据需要t First sentence.

如何在ed中做非贪婪替换?

+1

这已被问了很多次。提示:非贪婪的匹配(如'。*?')是你的朋友。在这种情况下更好的是一个排他字符类,比如'[^。] *'。 –

回答

1

我不知道如果ed支持非贪婪的匹配,但假设它不会:

要匹配除一个点的一切。

.s/[^.]*\./replacement./ 
+0

辉煌 - 谢谢! –

+1

请注意,'.'不会跨越换行符(它是*“每个字符,而是'\ n'”*,真的),而'[^。]'*当然会很快匹配跨越换行符。这可能不是'ed'的问题,但它可能会导致在其他情况下意外的结果。 – Tomalak