正则表达式 – 如何在结果字符串中显示重复的匹配模式
发布时间:2020-12-13 22:55:17 所属栏目:百科 来源:网络整理
导读:如何在结果字符串中精确重复n个匹配的模式? 示例如果我有以下文本: ++ '[' -f /etc/bashrc ']'++ . /etc/bashrc+++ '[' '[u@h W]$' ']'+++ '[' -z 'printf " 33]0;%s@%s:%s 07" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' ']'+++ shopt -s che
如何在结果字符串中精确重复n个匹配的模式?
示例如果我有以下文本: ++ '[' -f /etc/bashrc ']' ++ . /etc/bashrc +++ '[' '[u@h W]$' ']' +++ '[' -z 'printf " 33]0;%s@%s:%s 07" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' ']' +++ shopt -s checkwinsize +++ '[' '[u@h W]$' = 's-v$' ']' +++ shopt -q login_shell +++ '[' 506 -gt 199 ']' ++++ id -gn 现在我想用3个空格替换每个”,但它只能在模式的开头发生.我会使用:< range> s / ^< pattern> :%s / / / g,但如果它在文本的其余部分中有一个”,我就会搞砸它. 问题: ^ ++$ -> ^ $ ^ +++$-> ^ $ ^ +$ -> ^ $ 谢谢
试试这个:
:%s/^+*/=repeat(' ',strlen(submatch(0)))/ submatch(0)包含在行开头匹配的所有匹配,strlen对它们进行计数.因此,对于行开头的每个加号,使用repeat插入三个空格. 欲获得更多信息: :help sub-replace-expression :help repeat() :help submatch() :help strlen() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |