正则表达式在首次查找后停止

时间:2011-01-14 21:58:53

标签: .net regex

如果我有以下文字:

some text
CREATE DATABASE [$(DatabaseName)]
This can be any text
GO

other text
GO

more text

我想只匹配

CREATE DATABASE [$(DatabaseName)]  
any text that is here
GO

使用正则表达式。到目前为止我所尝试的失败并给了我一切直到最后的GO。我想在找到GO的第一次出现后停止。

这就是我的尝试:

CREATE DATABASE[^<>]*^(GO)+?

我理解为什么它不起作用,但不知道如何解决它。 非常感谢。

5 个答案:

答案 0 :(得分:2)

在您的正则表达式中添加?以使其不贪婪

http://www.lbsharp.com/wordpress/index.php/2007/02/19/net-regular-expressions/

答案 1 :(得分:1)

这样做:

CREATE DATABASE \[(.+?)\]

答案 2 :(得分:1)

根据我的理解,这适用于我(如果需要,点匹配新行已设置)

CREATE DATABASE.*?GO

使用我为其创建的永久链接,在rubular.com查看测试结果:http://rubular.com/r/2KsBrnSGhC

答案 3 :(得分:0)

我对正则表达式很糟糕,所以如果你在.Net环境中,请尝试使用MS的这个好插件:

http://visualstudiogallery.msdn.microsoft.com/en-us/55c24bf1-2636-4f94-831d-28db8505ce00

答案 4 :(得分:0)

我找到了怎么做:

CREATE DATABASE+([\s\S]*?)+GO

或更短

CREATE DATABASE[\s\S]*?GO