【问题标题】:Matching zero or more characters in sed匹配 sed 中的零个或多个字符
【发布时间】:2013-04-28 14:12:19
【问题描述】:

当我对以下命令的输出感到困惑时,我正在使用 sed 练习一些命令:

echo 'first:second' | sed 's_[^:]*_(&)_g'

我的问题是:为什么这个命令只用括号括起来字符串“first”和“second”?

既然我在正则表达式条件中指定了“或更多非冒号”,难道不应该也换行冒号吗?

请澄清。

【问题讨论】:

  • 冒号本身既不是“零个非冒号”(因为它是长度为 1 的字符串)也不是“更多非冒号”(因为它是一个冒号),所以很明显该模式不匹配。
  • 您所期望的结果是什么?听起来您期待(first)(:)(second),但这显然不会发生。或者你的意思是(first)():(second)()
  • 嗨,克里斯。谢谢你的开导。我现在明白代码的含义了!

标签: regex bash unix sed


【解决方案1】:

你使用

[^:]

搜索除: 之外的所有字符。 所以你所体验的是正常的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 2018-04-30
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多