下面是使用正则表达式进行匹配的文本:
打印转换(NVARCHAR,CURRENT_TIMESTAMP,111) +‘’+转换(NVARCHAR,CURRENT_TIMESTAMP,108) +‘-Test模式:’+(当@turbo_mode_ind =1然后‘一些文本’测试‘更多的文本。还有更多的短信“临时”什么时候停止呢?(最后)
打印“文本不要文本”
打印“文本”“test2 2”“文本”
我想要匹配的是:
打印转换(NVARCHAR,CURRENT_TIMESTAMP,111) +‘’+转换(NVARCHAR,CURRENT_TIMESTAMP,108) +‘-Test模式:’+(当@turbo_mode_ind =1然后‘一些文本’‘测试’时
打印‘文本’‘test2 2’‘
所以基本上我想要匹配:
从“打印”( PRINT )开始的每个字符(在PRINT ( line-breaks)
我已经对此进行了补充,但它仍然与空行匹配:
PRINT.*?\'{2}\w+\'{2}(?!\n\s*\n)
发布于 2009-11-26 12:19:16
评论后的编辑:
再看一遍需求,我无法快速想出一个单一的正则表达式解决方案。在您的评论中,您提到您正在使用C#。
一个可能的解决方案是先将字符串拆分为空行,然后提取文本。
就像这样:
string pattern = @"^$";
foreach (string result in Regex.Split(input, pattern, RegexOptions.Multiline)
{
Regex rxFindSql = Regex(@"PRINT.*?\'{2}\w+?\'{2}", RegexOptions.SingleLine)
MatchCollection matches = rxFindSql.Matches(result);
} 这应该是可行的,但我没有测试代码。
我希望这能帮到你。
https://stackoverflow.com/questions/1802991
复制相似问题