Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 如何使用搜索/替换访问vim中的正则表达式匹配?_Regex_Vim - Fatal编程技术网

Regex 如何使用搜索/替换访问vim中的正则表达式匹配?

Regex 如何使用搜索/替换访问vim中的正则表达式匹配?,regex,vim,Regex,Vim,样本: 我想在vim中编写一个搜索并替换正则表达式,它可以执行以下操作: function foobar($arg1 = null, $arg2 = null) { $_a = $arg1; $_b = $arg2; } 这就是我迄今为止所尝试的: 使用命令重复我在vim中的最后一个操作,但它只附加:1到行 我已经编写了几十种这种正则表达式的变体,但无法按预期工作: %s/\$\u a\t=\t*/(!\$arg1)\t\?\t\2\t\:\t1/g 手动替换行,但不用说,我必

样本:

我想在vim中编写一个搜索并替换正则表达式,它可以执行以下操作:

function foobar($arg1 = null, $arg2 = null) {
    $_a = $arg1;
    $_b = $arg2;
}
这就是我迄今为止所尝试的:

  • 使用
    命令重复我在vim中的最后一个操作,但它只附加
    :1到行
  • 我已经编写了几十种这种正则表达式的变体,但无法按预期工作:
    %s/\$\u a\t=\t*/(!\$arg1)\t\?\t\2\t\:\t1/g
  • 手动替换行,但不用说,我必须对大量文件执行此操作 基本上我想做的是编写一个匹配
    $arg1
    ,然后用三元运算符将匹配项括起来,但我无法访问vim中的正则表达式匹配项

    任何帮助都将不胜感激

    (不必在vim中完成,我愿意接受使用perl之类的建议)

    谢谢

    尝试以下命令:

    function foobar($arg1 = null, $arg2 = null) {
       $_a = (!$arg1) ? $arg1 : 1;
       $_b = (!$arg2) ? $arg2 : 1;
     }
    
    上面的命令replace
    $arg1
    (!$arg1)$arg1:1

    :%s/\(\$arg[0-9]\);/(!\1) ? \1 : 1;