Здравствуйте, server_mouse, Вы писали:
_>т.е. не срабатывает жадность...
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string text = @"
AS
BEGIN
-- Тело процедуры 1
-- Тело процедуры 2
END
GO";
string pattern = @"(AS\r\nBEGIN(?<body>(.|(\r\n))*)\r\nEND)\r\nGO";
Match m = Regex.Match(text, pattern, RegexOptions.Multiline);
if (m.Success)
Console.WriteLine(m.Groups["body"]);
}
}
}
Ребята, помогите написать регулярное выражение, а то я что-то туплю.
Есть sql-скрипт:
-- header SP ....
-- ..........AS
BEGIN-- Тело процедурыEND
GO
Из него хочу вытянуть
AS
BEGIN-- Тело процедурыEND
Пытаюсь использовать такое выражение: "(AS\nBEGIN[.\n]*END)\nGO".
Т.е. группа в скобочках и была бы столь вожделенным телом, но... match.Success==false, т.е. не находится НИ ОДНОГО совпадения.
Почему???? Как сделать???
Повреждение мозга после ректальной биопсии — редкая штука (с) Хаус
Здравствуйте, server_mouse, Вы писали:
_>Пытаюсь использовать такое выражение: "(AS\nBEGIN[.\n]*END)\nGO". _>Т.е. группа в скобочках и была бы столь вожделенным телом, но... match.Success==false, т.е. не находится НИ ОДНОГО совпадения. _>Почему???? Как сделать???
Здравствуйте, AndrewVK, Вы писали:
AVK>Эта задача скорее всего при помощи регулярных грамматик не решается.
Если вы имеете в виду трудности с распознаванием вложенных друг в друга конструкций типа BEGIN/END (и прочих вложенных скобок и т.п.), то по-моему это можно решить посредством механизма Balancing Group Definition (есть реализация в дотнетовских регекспах). Хотя да, вы правы, сама грамматика будет уже не регулярной.
О>Если вы имеете в виду трудности с распознаванием вложенных друг в друга конструкций типа BEGIN/END (и прочих вложенных скобок и т.п.), то по-моему это можно решить посредством механизма Balancing Group Definition (есть реализация в дотнетовских регекспах). Хотя да, вы правы, сама грамматика будет уже не регулярной.
Грамматика регэкспов, не смотря на название, выходит за рамки регулярной.