目标:替换![alttext](url.png)
为<img src="url.png" alt="alttext">
。
在!
与(...)
部分做工精细,这是[...]
我不能去工作的一部分。
作为一个简单的示例,我想匹配input a [test] b
。这是我使用的命令:
echo 'a [test] b' | sed 's/\[[^\]]*\]/x/'
它不起作用。当我将方括号替换为尖括号时,它可以正常工作:
echo 'a <test> b' | sed 's/<[^>]*>/x/'
为什么sed不能理解相同的正则表达式,但带有转义的方括号?它在Python等其他工具中也能正常工作。
在字符类定义内]
直接紧接在^
。所以不要逃避这个。另外,您缺少诸如的量词+
,说“一个或多个字符”或*
说“零个或多个字符”。此外sed
,您的命令行中有太多。
$ echo 'a [test] b' | sed 's/\[[^]]\+\]/x/'
a x b
(\+
是GNU扩展(现在也受其他一些实现支持),标准等效项是\{1,\}
)
或更可读:
$ echo 'a [test] b' | sed -E 's:\[[^]]+\]:x:'
a x b
(-E
是BSD扩展,现在也由GNUsed
和其他一些实现支持;-r
在GNU的较早版本中使用sed
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句