我在 sed 中使用以下正则表达式,但我想保留一个值。我想保留 anchor 文本值。在本例中,它是 3。 现在,下面的代码将在任何有包含 href 且其中包含井号的 anchor 标记的地方输出 []。我希望它是 [3] 而不是 []。该数字是动态的,因此在本例中为 3,但每次都会不同。无论如何要获取该数字然后在正则表达式中调用它?
echo '<a href="#anchor3">3</a>' | sed 's:<a href="#.*>[0-9]</a>:[]:g'
最佳答案
您必须使用捕获括号和反向引用。
捕获括号只是您希望保留的模式部分的括号。然后,您可以使用 \1
(对于第一组括号)、\2
等在替换中回调它们。
echo '<a href="#anchor3">3</a>' | sed -r 's:<a href="#.*>([0-9])</a>:[\1]:g'
# returns '[3]'
关于regex - 正则表达式中的召回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425633/