Получение групп с помощью регулярного выражения

#c# #regex

#c# #регулярное выражение

Вопрос:

 {%if Lang="english", Site="testsite"}
content
{%endif}
  

Мне нужно получить язык групп, сайт и содержимое

Это то, что я использую для получения части содержимого

 ".*}(.*){%.*"
  

Комментарии:

1. Что вы пробовали, в чем ваша проблема? На данный момент вопрос заключается только в том, «Сделайте мою работу за меня»

2. «.*}(.*){%.*» даст мне содержимое в группе 1, а не 0

Ответ №1:

Вы можете захватывать группы с помощью ?<groupname> .

Это очень грубое регулярное выражение для получения нужных групп:

 {%ifs.*(Lang="(?<lang>[^"]*))".*(Site="(?<site>[^"]*))"}(?<content>[^{]*){%endif}
  

при использовании регулярного выражения из c # вы можете получить группы с помощью:

 var _regex = new RegEx(...);
var _language = _regex.Groups["lang"].Value;
  

Ответ №2:

Я не уверен, насколько гибким вам нужно ваше регулярное выражение, но попробуйте что-то вроде:

 {%if Lang="(.*)",s.*Site="(.*?)"}(rn)*?(.*?)(rn)*?{%endif}
  

Затем вы можете получить совпадения оттуда.