Luc*_*Luc 0 sed regular-expression
目标:替换为<img src="url.png" alt="alttext">.
在!与(...)部分做工精细,这是[...]我不能去工作的一部分。
作为一个简单的例子,我想匹配 input a [test] b。这是我使用的命令:
echo 'a [test] b' | sed 's/\[[^\]]*\]/x/'
Run Code Online (Sandbox Code Playgroud)
它不起作用。当我用尖括号替换方括号时,它工作得很好:
echo 'a <test> b' | sed 's/<[^>]*>/x/'
Run Code Online (Sandbox Code Playgroud)
为什么 sed 不理解相同的正则表达式但带有转义的方括号?它在 Python 等其他工具中运行良好。
在字符类定义]中,当直接跟在^. 所以不要逃避这个。此外,您还缺少一个量词+,例如“一个或多个字符”或*“零个或多个字符”。此外sed,您的命令行中有一个太多了。
$ echo 'a [test] b' | sed 's/\[[^]]\+\]/x/'
a x b
Run Code Online (Sandbox Code Playgroud)
(\+作为一个 GNU 扩展(现在也被其他一些实现支持),标准的等价物是\{1,\})
或更易读:
$ echo 'a [test] b' | sed -E 's:\[[^]]+\]:x:'
a x b
Run Code Online (Sandbox Code Playgroud)
(-E作为 BSD 扩展,现在也被 GNUsed和其他一些实现支持;-r在旧版本的 GNU 中使用sed)。
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |