初学sed正则表达式,请懂的人解释下s/\(.*\).*:\(.*\)/\2:\1/'功能是把冒号左右内容对换但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 15:33:28
![初学sed正则表达式,请懂的人解释下s/\(.*\).*:\(.*\)/\2:\1/'功能是把冒号左右内容对换但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括](/uploads/image/z/11395509-69-9.jpg?t=%E5%88%9D%E5%AD%A6sed%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%2C%E8%AF%B7%E6%87%82%E7%9A%84%E4%BA%BA%E8%A7%A3%E9%87%8A%E4%B8%8Bs%2F%5C%28.%2A%5C%29.%2A%3A%5C%28.%2A%5C%29%2F%5C2%3A%5C1%2F%27%E5%8A%9F%E8%83%BD%E6%98%AF%E6%8A%8A%E5%86%92%E5%8F%B7%E5%B7%A6%E5%8F%B3%E5%86%85%E5%AE%B9%E5%AF%B9%E6%8D%A2%E4%BD%86%E6%88%91%E7%90%86%E8%A7%A3%E7%9A%84%E6%98%AF%2C%E5%8C%B9%E9%85%8D%E7%9A%84%E5%86%85%E5%AE%B9%2C%E5%BA%94%E8%AF%A5%E5%85%88%E6%98%AF%E4%B8%80%E4%B8%AA%E6%8B%AC%E5%8F%B7%28%29%2C%E6%8B%AC%E5%8F%B7%E9%87%8C%E5%8F%AF%E4%BB%A5%E6%9C%890-n%E4%B8%AA%E5%AD%97%E7%AC%A6%2C%E6%8E%A5%E7%9D%80%E6%98%AF0-n%E5%AD%97%E7%AC%A6%2C%E6%8E%A5%E7%9D%80%E6%98%AF%E5%86%92%E5%8F%B7%2C%E5%86%8D%E6%98%AF%E4%B8%80%E4%B8%AA%E6%8B%AC)
初学sed正则表达式,请懂的人解释下s/\(.*\).*:\(.*\)/\2:\1/'功能是把冒号左右内容对换但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括
初学sed正则表达式,请懂的人解释下
s/\(.*\).*:\(.*\)/\2:\1/'
功能是把冒号左右内容对换
但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括号()里面有0-n个字符的,匹配这样的字符串,把冒号左右的对掉.
pattern里明明有\( \),这样的括号,为什么没有括号包起来的字符串也会被匹配到?
初学sed正则表达式,请懂的人解释下s/\(.*\).*:\(.*\)/\2:\1/'功能是把冒号左右内容对换但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括
sed默认使用的是古老的基本正则表达式(BRE)
's/(.*):(.*)/\2:\1/'
上面这样不加反斜杠转义才是你理解的那种形式,匹配在括号里的字符
's/\(.*\):\(.*\)/\2:\1/'
圆括号前加上反斜杠转义,才是我们理解的分组,与现在大多数语言使用的含义相反.
如果不习惯,可以使用-r参数,使用扩展正则表达式
sed -r 's/(.*):(.*)/\2:\1/'
sed -r 's/\(.*\):\(.*\)/\2:\1/'
这样就与你的理解一致了