Pau*_*ter 80 regex visual-studio
有没有办法让Visual Studio跨多行执行正则表达式替换(让匹配跨线边界)?我知道我可以使用很多编辑器,但是这个功能在Visual Studio中被遗漏似乎很奇怪.我错过了什么吗?
Gil*_*rts 69
Visual Studio 2013中的正则表达式已更改. https://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.120).aspx
要将表达式与两行匹配,代码现在将是:
StartOfExpression.*\r?\n.*EndOfExpression
woo*_*hoo 22
今天在Visual Studio 2012中有效:
fooPatternToStart.*(.*\n)+?.*barPatternToEnd
Run Code Online (Sandbox Code Playgroud)
了解该(.*\n)+?部分如何跨多行进行匹配,非贪婪.
fooPatternToStart是你的起跑线上的一些正则表达式模式,而barPatternToEnd你的模式是在下面的另一行找到的,下面可能有很多行......
例如找到这里.
简单有效:)
注意:在 VS2012 之前,有效的模式是:fooPatternToStart.(.\n)+@.*barPatternToEnd
Fre*_*örk 19
注意:此答案使用Visual Studio中使用的正则表达式语法,包括VS 2012.在VS 2013及更高版本中,正则表达式语法已更改.
您可以\n在表达式中包含.作为一个例子,这里是一个正则表达式,我用来从任何非存储过程的东西"清理"自动生成的SQL脚本(它将匹配以包含"Object:"的行开头的文本块,后跟不是"StoredProcedure",然后将以下行匹配到一行包含单词"GO"):
/\*+ Object\::b:b~(StoredProcedure)(.*\n)#GO\n
Run Code Online (Sandbox Code Playgroud)
Ste*_*amm 17
使用替换文件对话框Ctrl- Shift- H和单行选项(?s):
(?s)start.*end
Run Code Online (Sandbox Code Playgroud)
认定
start
two
three
end
Run Code Online (Sandbox Code Playgroud)
单行表示:每个文件都被视为单行,点.与新行匹配\n.缺点:您必须使用全部查找并全部替换,或手动更换.找到下一个不起作用.
对于非模态对话框Ctrl- H并找到下一个,用于(.*\n)*匹配任意数量的行:
start(.*\n)*.*end
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,您都可以通过插入替换多行的结果\n.
| 归档时间: |
|
| 查看次数: |
26187 次 |
| 最近记录: |