regex - 正则表达式中的召回值

标签 regex unix sed

我在 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/

相关文章:

PHP - 需要正则表达式帮助

java - csv 文件的 java.util.Scanner 的正则表达式?

javascript - 在单引号或双引号外用分号分隔的正则表达式

c# - 删除方括号和单引号正则表达式不起作用

c - 删除 root 权限并仍然生成核心转储

ruby - 当前行以 ^M 结尾时追加文件中的下一行

linux - BASH/sed - 不为简单的 sed 命令提供相同的输出

linux - 使用 Bash 检查另一个目录中是否存在相同的文件

java - 在 Java 中运行 UNIX Source 命令

Bash:对包含空格的变量使用 cd 命令