Нужно распарсить одним регулярным выражение строку вида: ident('d',"asdf",gft, 'a', "asdasdas"); 'a' - символ, содержиться только одна буква|цифра "asdf" - строка, как буквы, так и цифры gft - просто параметр ident - идентификатор Все маркеты могут быть разбросаны (т.е те которые внутри скобки) Я начал делать, получилось распарсить только несколькими регулярными выражениями. Но хочу узнать, можно ли распарсить одним. PHP: //MatchCollection str = Regex.Matches(line, "\"[a-zA-Z0-9]+\""); //foreach (Match m in str) // richTextBox1.AppendText("Строка - " + m.Value + "\n"); //MatchCollection ch = Regex.Matches(line, @"'[a-zA-Z0-9]{1}'"); //foreach (Match m in ch) // richTextBox1.AppendText("Символ - " + m.Value + "\n"); //MatchCollection param = Regex.Matches(line, @"[,| ]([a-zA-Z0-9]+)[,|\)| ]"); //foreach (Match m in param) // richTextBox1.AppendText("Параметр - " + m.Groups[1].Value + "\n"); Одним пробывал так PHP: string line = textBox1.Text; MatchCollection ident = Regex.Matches(line, @"^([a-zA-Z0-9]+)(\(('[a-zA-Z0-9]{1}')|(.*?)\));$"); foreach(Match m in ident) { for (int i = 0; i < m.Groups.Count;i++ ) richTextBox1.AppendText("Идентификатор - " + m.Groups[i].Value + "\n"); } Ещё не дописал, поскольку возникли вопросы, как экранировать в одном выражении "" и например ()?
var line = "ident('d',\"asdf\",gft, 'a', \"asdasdas\");"; Console.WriteLine(line); var reg = new Regex("'(.+)?',\"(.+)?\",(\\w+)?, '(.+)?', \"(\\w+)?\"", RegexOptions.IgnoreCase); var m = reg.Match(line); foreach (Group group in m.Groups) { Console.WriteLine(group.Value); }
W!z@rD, спасибо большое, но мне нужно, что бы вот эти символы в кавычках, как одинарных и двойных, стоили в разном порядке!
Не знаю как можно реализовать это на регулярках, но можно примерно так с помощью explode: - Убрать из начала `ident(,` а из конца `);`. - Разобрать получившеюся строку на массив, используя `,` в качестве разделителя. -Сделать цикл пребора каждого элемента массива, проверять - стоят ли одинарные кавычки, двойные или воовсе без кавычек и записывать куда нужно. Думаю тебе лучше обратиться к человеку, который понимает регулярки. Думаю это будет выглядеть примерно так: Code: /^ident\(['|"](.*?)['|"],['|"](.*?)['|"],['|"](.*?)['|"],['|"](.*?)['|"],['|"](.*?)['|"]\);$/