Regex Visual Studio多行替换忽略查找时的前导空格,但在替换时包含前导空格

Regex Visual Studio多行替换忽略查找时的前导空格,但在替换时包含前导空格,regex,visual-studio,Regex,Visual Studio,我正在使用Visual Studio扩展,尝试进行多行替换 一般用途: 我希望能够在查找时忽略前导空格,但在替换时包含前导空格 示例 假设我们有以下代码: namespace Test { public class TestCase { static void Main(string[] args) { int? num1 = 2; int? num2 = null; bool

我正在使用Visual Studio扩展,尝试进行多行替换

一般用途:

我希望能够在查找时忽略前导空格,但在替换时包含前导空格

示例

假设我们有以下代码:

namespace Test
{
    public class TestCase
    {
        static void Main(string[] args)
        {
            int? num1 = 2;
            int? num2 = null;
            bool isLarger = num1 > num2;
        }
    }
}
。。。假设我们要替换代码:

int? num2 = null;
bool isLarger
。。。与:

int? num2 = null;
var larger
所以我们会得到:

namespace Test
{
    public class TestCase
    {
        static void Main(string[] args)
        {
            int? num1 = 2;
            int? num2 = null;
            var larger = num1 > num2;
        }
    }
}
用于查找的正则表达式

在上面的示例中,用于查找文本(由VS扩展生成)的正则表达式是:


替换的正则表达式是什么?

您可以通过默认的搜索和替换对话框轻松完成任务:

查找内容:
\b(num2=null;\r\s*)bool isLarger\b


查找内容:
\b(num2=null;[\r\s]*)bool isLarger\b

替换为
$1var更大

详细信息

  • \b
    -单词边界
  • (num2=null;\r\s*)
    -捕获组1(
    $1
    检索此值):
    • num2=null-文字字符串
    • \r
      -换行顺序
    • \s*
      -0+空格(如果在VS中没有使用
      \r
      ,则此模式与换行符不匹配)
  • bool isLarger
    -字符串
  • \b
    -单词边界
测试:

结果:


鹅。为什么否决?问题解决了吗?@fenixil我解决了它,发布了一个有效的解决方案,见下面我的答案。您的解决方案在Visual Studio中不起作用,因为它的正则表达式引擎有点“调整”,并且不像大多数其他面向非编辑器工具的正则表达式实现那样工作。Downvoter:该解决方案是正确的,可以工作。见上面的证明。请在向下投票前检查,因为虚假的向下投票误导OP和未来的访客。似乎有人喜欢向下投票有效的问题和有效的答案。接受并投票表决。顺便说一句,作为将来的参考,就像另一个例子:
\b(\)\r\s*)\b
将捕获一个
字符,后跟一个
字符。
num2 = null;((\r\n)|\n|\r)( |\t)*var larger()