Regex 在sed中匹配零个或多个字符
当我被以下命令的输出弄糊涂时,我正在使用sed练习一些命令:Regex 在sed中匹配零个或多个字符,regex,bash,unix,sed,Regex,Bash,Unix,Sed,当我被以下命令的输出弄糊涂时,我正在使用sed练习一些命令: echo 'first:second' | sed 's_[^:]*_(&)_g' 我的问题是:为什么这个命令只将字符串“first”和“second”括在括号中 既然我在正则表达式条件中指定了“0或更多非冒号”,冒号不应该也被包装吗 请澄清。您使用的 [^:] 它搜索除以外的所有字符:。 因此,您所体验到的是正常的组合。冒号本身既不是“零非冒号”(因为它是长度为1的字符串),也不是“更多非冒号”(因为它是冒号),因此很明
echo 'first:second' | sed 's_[^:]*_(&)_g'
我的问题是:为什么这个命令只将字符串“first”和“second”括在括号中
既然我在正则表达式条件中指定了“0或更多非冒号”,冒号不应该也被包装吗
请澄清。您使用的
[^:]
它搜索除以外的所有字符:
。
因此,您所体验到的是正常的组合。冒号本身既不是“零非冒号”(因为它是长度为1的字符串),也不是“更多非冒号”(因为它是冒号),因此很明显,模式不匹配。您到底希望得到什么样的结果?听起来好像你期望
(第一次)(:)(第二次)
,但这显然不会发生。或者你是说(第一次)(:(第二次)(
)嗨,克里斯。谢谢你的启发。我现在明白代码的意思了!