Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在sed中匹配零个或多个字符_Regex_Bash_Unix_Sed - Fatal编程技术网

Regex 在sed中匹配零个或多个字符

Regex 在sed中匹配零个或多个字符,regex,bash,unix,sed,Regex,Bash,Unix,Sed,当我被以下命令的输出弄糊涂时,我正在使用sed练习一些命令: echo 'first:second' | sed 's_[^:]*_(&)_g' 我的问题是:为什么这个命令只将字符串“first”和“second”括在括号中 既然我在正则表达式条件中指定了“0或更多非冒号”,冒号不应该也被包装吗 请澄清。您使用的 [^:] 它搜索除以外的所有字符:。 因此,您所体验到的是正常的组合。冒号本身既不是“零非冒号”(因为它是长度为1的字符串),也不是“更多非冒号”(因为它是冒号),因此很明

当我被以下命令的输出弄糊涂时,我正在使用sed练习一些命令:

echo 'first:second' | sed 's_[^:]*_(&)_g'
我的问题是:为什么这个命令只将字符串“first”和“second”括在括号中

既然我在正则表达式条件中指定了“0或更多非冒号”,冒号不应该也被包装吗

请澄清。

您使用的

[^:]
它搜索除
以外的所有字符:

因此,您所体验到的是正常的组合。

冒号本身既不是“零非冒号”(因为它是长度为1的字符串),也不是“更多非冒号”(因为它是冒号),因此很明显,模式不匹配。您到底希望得到什么样的结果?听起来好像你期望
(第一次)(:)(第二次)
,但这显然不会发生。或者你是说
(第一次)(:(第二次)(
)嗨,克里斯。谢谢你的启发。我现在明白代码的意思了!