Я использую ((?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/))|(--[^@].*[\r\n])
Regex, чтобы идентифицировать все комментарии в файле. (Я читаю файл PL/SQL, и он использует - для одиночных комментариев и/* */для многострочных комментариев) Это прекрасно работает, и я могу получить все комментарии без каких-либо проблем.C# Regex найти строку, которая не комментируется
Я хочу получить код, который не соответствует приведенному выше регулярному выражению. Так что я использовал Regex [^(((?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/))|(--[^@].*[\r\n]))]
MatchCollection matches = Regex.Matches(text, "[^(((?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/))|(--[^@].*[\r\n])])");
for (int i = 0; i < matches.Count; i++)
{
Console.WriteLine(matches[i].Groups[0].Value);
}
Затем, когда я пытаюсь запустить его, говорит
The file could not be read:
parsing "[^((?:/\*(?:[^*]|(?:\*+[^*/]))*\*+/))|(--[^@].*[
])]" - Too many)'s.
Как я могу получить линию, которые не являются комментарии?
'[^ ...]' класс символов. Он не будет распознавать контент как нечто иное, кроме класса символа или символа внутри. – nhahtdh
@nhahtdh Если это так, я могу сопоставить код без комментария? –
Надеюсь, ваш SQL не содержит 'SELECT 'some-string' FROM [some-table]' ;-) –