Ces*_*sar 0 regex sed non-greedy
我在文件a.txt中有一个字符串
{moslate}alho{/moslate}otra{moslate}a{/moslate}
需要otra使用sed 获取字符串.
有了这个正则表达式
sed 's|{moslate}.*{/moslate}||g' a.txt
a根本没有输出,但是当我添加?到正则表达式时
s|{moslate}.*?{/moslate}||g a.txt
(我在某处读到它使正则表达式非贪婪)我根本得不到匹配,我的意思是得到以下输出
{moslate}alho{/moslate}otra{moslate}a{/moslate}
如何使用sed获得所需的输出?
SED不支持非贪婪匹配,所以你需要通过使它接受的选择更加贪婪来使'.*'术语变得贪婪.我没有你正在寻找的那种东西的语料库,但我会假设你不想找到任何带嵌入式花括号的东西.如果是这样,那么你可以使用:
sed 's|{moslate}[^{]*{/moslate}||g' a.txtRun Code Online (Sandbox Code Playgroud)
这将适用于您提供的情况,但如果这些东西嵌套将会失败.
| 归档时间: |
|
| 查看次数: |
7820 次 |
| 最近记录: |