[英]How do I insert ‘\’+‘n’ using regex replacement in MSVS 2012+ editor (and .NET?)
在Visual Studio 2013的编辑器中,我理解它与2012非常相似, 据称使用.NET正则表达式,我无法获得替换字符串以插入反斜杠和' n
' - 甚至可能吗?
我希望在C程序的某些(但不是全部)行的第一个“ "
之后插入' \\n
',即使字符串文字以新行开头。显然,要查找的表达式是' ^([^"]*)"
',替换是......什么?' $1"
'+ magic +' n
',其中魔术就是插入反斜杠。 我不是想编写.NET代码来执行此操作,而是在编辑器中以交互方式执行此操作。
注意这个问题并不适用于2010 MSVS,它有一个较旧的RE语法。
.NET引用中的替换都不合适。
Regular-expressions.info说' 你不能也不必逃避反斜杠,感叹号或除了美元之外的任何其他字符,因为它们在.NET,JavaScript,VBScript和PCRE2替换字符串中没有特殊含义 ' - 但是MSVS RE Replace似乎将替换中的' \\n
'视为新行!
RegexHero (用于.NET)表示' ^([^"]*)"
'→' $1"\\n
'转换' asdf"qwer
'→' asdf"\\nqwer
',这与Regular-expressions.info一致。
我的印象 - 恐惧 - 是MSVS IDE在将它传递给RE引擎之前在编辑对话框中转换了一些C风格的转义,例如' \\n
',' \\r
'和' \\t
',但是留下了其他的反斜杠不变。 特别是,它不提供诸如' \\\\
'(或' $\\
')之类的形式,因为可能需要插入反斜杠。 鉴于记录的RE引擎行为,这是对我有意义的唯一解释; 结论是您不能插入被解释为C样式转义的一部分的反斜杠。
我为魔术尝试了各种各样的东西:
n
'之前,这些都会自我产生:
\\\\
' \\134
' \\x5cn
' \\
”前“ n
”产生一个新的线 $\\
”之前“ n
”收益率“ $
” +新行 我怀疑我必须做两步工作,例如:
^([^"]*)"
'→' $1"\\\\n
' ^([^"]*"\\\\)\\\\
'→' $1
' ......有效,但比一步解决方案更笨拙,更容易出错。
我希望在第一个'''之后插入'\\ n'
如果一个人不使用正则表达式而是使用标准文本搜索和替换,则可以完成。 但是人们需要亲自动手去跳过你不想要的报价。
我会使用NotePad ++作为正则表达式^\\x22
(\\ x22是引用的转义,我在处理正则表达式模式时的习惯,而不是字面上逃避C#编译器的引用,例如""
= \\x22
)和替换\\\\n
工作并用Notepad ++中的文字\\n
替换行的第一个引号。
注意查看处理特殊字符时报告的其他异常:
查找和替换对话框正则表达式替换无法转义“$”符号| Microsoft Connect
在具有宏功能的Visual Studio的旧版本中,这可以实现。
您的正则表达式似乎有效。 以下代码将显示true:
var test = "asdf\"qwer";
var replaced = Regex.Replace(test, "^([^\"]*)", "$1\n");
Console.WriteLine(replaced[4] == '\n');
也许你需要一个"\\r\\n"
作为@ stephen.vakil建议或其他东西导致你的代码出现问题。
尝试$1\\r\\n
- 它在VS 2013中适用于我。假设您需要一个新行,而不是专门\\n
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.