Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
C# regexp-替换其他文本之外的文本_C#_Regex - Fatal编程技术网

C# regexp-替换其他文本之外的文本

C# regexp-替换其他文本之外的文本,c#,regex,C#,Regex,我正在编辑一些C代码,需要将nameof(somevar)等表达式更改为“somevar”。使用regexp是否可行 下面是一个更好的例子: 我所拥有的: throw new ArgumentException(nameof(outputFilePath)); 我需要的是: throw new ArgumentException("outputFilePath"); 替换regexp: nameof\(([^)]*)\) 作者: 这应该做到: string s = "nameof(

我正在编辑一些C代码,需要将nameof(somevar)等表达式更改为“somevar”。使用regexp是否可行

下面是一个更好的例子:

我所拥有的:

throw new ArgumentException(nameof(outputFilePath));
我需要的是:

throw new ArgumentException("outputFilePath");
替换regexp:

  nameof\(([^)]*)\)
作者:

这应该做到:

  string s = "nameof(abc)";
  Regex r = new Regex("nameof\\((.+?)\\)");
  string output = r.Replace(s, "\"$1\"");
  • \(
    搜索左括号
  • (.+?)
    创建一个组(即
    $1
    ),该组将搜索任何字符(
    )一次或多次(
    +
    ),并以惰性方式(
  • \)
    搜索右括号

这样做的意义和好处是什么?
nameof
的目的正是为了确保由
nameof
生成的字符串实际上与给定的成员/变量名相匹配,而不是有一个字符串意外地包含错误/拼写错误/旧的成员名……我需要这个用于powershell脚本,它不支持版本6+功能。哦,我懂了。那么,当然没有办法移除这个操作符…:-(我用VS代码替换它,不知怎么的,它找不到任何“nameof\(.+?)\”。我用了@seduardo解决方案,但是没有$seduardo就不行,正如你提到的,所以我对你的答案投了赞成票)@MikeTwc-Huh…不确定为什么不行,但我很高兴seduardo的回答是正确的。这个例子是在您请求替换放置此参数时使用notepad++或其他编辑器。但是使用javascript可以直接使用:“抛出新ArgumentException(nameof(outputFilePath));”。替换(/nameof(([^)]*)/,“\$1\”)
  string s = "nameof(abc)";
  Regex r = new Regex("nameof\\((.+?)\\)");
  string output = r.Replace(s, "\"$1\"");