回忆正则表达式中的值

时间:2012-02-24 04:59:46

标签: regex unix sed

我在sed中使用以下正则表达式,但我想保留一个值。我想保留锚文本值。在这种情况下,它是一个3.现在,下面将输出[]任何有href的锚标记,其中有一个井号。我希望它是[3]而不是[]。这个数字是动态的,所以在这种情况下它是3,但每次都会有所不同。无论如何得到那个数字,然后在正则表达式中回忆起来?

echo '<a href="#anchor3">3</a>' | sed 's:<a href="#.*>[0-9]</a>:[]:g'

1 个答案:

答案 0 :(得分:2)

您必须使用捕获括号和反向引用。

捕获括号只是您希望保留的图案部分的括号。然后,您可以使用\1(对于第一组括号),\2等来替换它们。

echo '<a href="#anchor3">3</a>' | sed -r 's:<a href="#.*>([0-9])</a>:[\1]:g'

# returns '[3]'