Visual Studio中的多行正则expression式
有没有什么办法让Visual Studio跨多行执行正则expression式replace(让匹配交叉线的边界)? 我知道有很多我可以使用的编辑器,但是这个特性已经被Visual Studio忽略了,这似乎很奇怪。 我错过了什么吗?
正则expression式在Visual Studio 2013中已更改。 https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx
为了匹配两行的expression式,代码现在是:
StartOfExpression.*\r?\n.*EndOfExpression
今天在Visual Studio 2012中有效:
fooPatternToStart.*(.*\n)+?.*barPatternToEnd
看看(.*\n)+?
部分是跨越多行匹配的,非贪婪的。
fooPatternToStart
是你的起始线上的一些正则expression式模式,而barPatternToEnd
是你的模式,可以find下面的另一行,可能下面的许多行…
例子在这里find。
简单有效:)
注意: 在 VS2012 之前 ,工作的模式是: fooPatternToStart. (. \n)+@.*barPatternToEnd
fooPatternToStart. (. \n)+@.*barPatternToEnd
注意:此答案使用Visual Studio中使用的正则expression式语法,包括VS 2012.在VS 2013和更高版本中,正则expression式语法已更改。
您可以在expression式中包含\n
。 作为一个例子,这里是一个正则expression式,我用它来清理自动生成的SQL脚本,而不是存储过程(它将匹配以“Object:”开头的文本块,之后是不是“StoredProcedure”,然后将以下行匹配到一行,包含单词“GO”):
/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\n
您可能需要在expression式末尾使用\ r \ n。