Привет! Я хочу, чтобы шаблон Regex соответствовал очень специфическому строковому синтаксису.Ниже приведена строка Pattern, которую я собрал;это работает в некоторых случаях, но не в других, и я совершенно уверен, что это слишком сложно:
\[\CONTENT\((?:(?:(?:(\w+) ?= ?((?:"(?:[^"]+)")|(?:'(?:[^']+)')|(?:(?:[^"',]+))) ?, ?)+(?:(?:\w+) ?= ?(?:(?:"(?:.+)")|(?:'(?:.+)')|(?:(?:[^"',]+)))))|(?:(?:\w+) ?= ?(?:(?:"(?:.+)")|(?:'(?:.+)')|(?:(?:[^"',]+)))))\)]
Синтаксис строки, который я пытаюсь найти, приведен ниже:
[CONTENT(Name="value, Name2='value2', Name_3 = value3, Name4= "value 4 \" includes an escaped quote")] etc
Группы совпадений, которые я хочу вернуть, выглядят следующим образом:
Match Group 1 - Match 1: [CONTENT(Name="value", Name2='value2', Name_3 = value3, Name4= "value 4 \" includes an escaped quote")]
Match Group 2 - Match 1: Name="value"
Match Group 2 - Match 2: Name
Match Group 2 - Match 3: value
Match Group 3 - Match 1: Name2='value'
Match Group 3 - Match 2: Name2
Match Group 3 - Match 3: value2
Match Group 4- Match 1: Name_3 = value3
Match Group 4- Match 2: Name_3
Match Group 4- Match 3: value3
Match Group 5 - Match 1: Name4= "value 4 \" includes an escaped quote"
Match Group 5 - Match 2: Name4
Match Group 5 - Match 3: value 4 \" includes an escaped quote
Когда я имею в виду группы совпадений, я имею в виду группы совпадений в .NET.Результаты не обязательно должны быть такими же, как указано выше, но, по возможности, похожими.
Я довольно хорошо разбираюсь в простом регулярном выражении, но не могу разобраться с осмотром и т. Д.msgstr "наборы могут повторять множество (возможно, но вряд ли неограниченное количество раз), каждое из которых разделено символом ',' (запятая) - за исключением последнего набора (за последним набором имя / значение не будет следовать", "(запятая)).Могут быть пробелы по обе стороны от знака «=» (равно) (или нет), а также по обе стороны от «,» (запятая).
Я не знаю, слишком ли это сложноделать с Regex или что (если это так, я открыт для любых предложений, которые кто-либо может дать в качестве альтернативы о том, как разобрать такую строку.)
Спасибо за любую помощь, которую кто-либо может предоставить.
Chris