Regex Visual Studio多行替换忽略查找时的前导空格,但在替换时包含前导空格
我正在使用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
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
-捕获组1((num2=null;\r\s*)
检索此值):$1
num2=null代码>-文字字符串
-换行顺序\r
-0+空格(如果在VS中没有使用\s*
,则此模式与换行符不匹配)\r
-字符串bool isLarger
-单词边界\b
鹅。为什么否决?问题解决了吗?@fenixil我解决了它,发布了一个有效的解决方案,见下面我的答案。您的解决方案在Visual Studio中不起作用,因为它的正则表达式引擎有点“调整”,并且不像大多数其他面向非编辑器工具的正则表达式实现那样工作。Downvoter:该解决方案是正确的,可以工作。见上面的证明。请在向下投票前检查,因为虚假的向下投票误导OP和未来的访客。似乎有人喜欢向下投票有效的问题和有效的答案。接受并投票表决。顺便说一句,作为将来的参考,就像另一个例子:
\b(\)\r\s*)\b
将捕获一个)
字符,后跟一个代码>字符。
num2 = null;((\r\n)|\n|\r)( |\t)*var larger()