2016-11-24 4 views
2

У меня есть следующий формат шаблон текста:Regex соответствие группа

  • [1/@DaysInMonth @FirstTitle] @SecondTitle

@DaysInMonth это получает на сколько дней там на основе выбранного месяца, а @FirstTitle @ SecondTitle - буквенно-цифровой.

Я попытался следующим:

[\1(?<DaysInMonth>\d\s+) (?<FirstTitle>[\w\s \]+)\] (?<SecondTitle>[\w\s \]+)$] 

Но это было не похоже, работает. Символ совпадений - 53 символа. [Link]

Как я могу это решить?

Редактировать после @ baddger964 ответ:

Я хочу использовать в моем приложении, как это:

private Regex _regex = null; 

string value = "[1/30 Development In Progress] Development In Progress"; 

_regex = new Regex(@"\[\d+\/(?<DaysInMonth>\d+)\s(?<FirstTitle>[\w\s]+)\]\s(?<SecondTitle>[\w\s]+)").Match(value); 

string value1 = _regex.Groups["DaysInMonth"].Value; 
string value2 = _regex.Groups["FirstTitle"].Value; 
string value3 = _regex.Groups["SecondTitle"].Value; 

Ваш ответ высоко ценится.

спасибо.

+0

делает что-то вроде этой работы: [(+ (?.? *) '\ (? \ D +)? [^]) \ D + /] \] $ ' – Neal

+0

Привет Нил, спасибо за ответ, я пробовал ваше решение, но, похоже, это тоже не сработало. [Ссылка] (https://regex101.com/r/7YPiUQ/3) – Reinhardt

+0

Рад, что вы получили ответ, но для справки в будущем не используйте regex101.com для тестирования регулярных выражений C#. php, javascript, python regex различны и не могут тестироваться для C# regex. Существует бесплатная бесплатная программа под названием Expresso (http://www.ultrapico.com/expresso.htm), на которую вы можете протестировать C# regex on. – Neal

ответ

2

Может быть, вы можете использовать это:

\[\d+\/(?<DaysInMonth>\d+)\s(?<FirstTitle>[\w\s]+)\]\s(?<SecondTitle>[\w\s]+) 

для примечания:

\1 => Dont избежать "1", потому что \1 матч то же самое, что и последний матч определенной группы.

[ => НУ должны избежать этого \[, потому что с [ вы создаете набор caracters

поэтому ваше регулярное выражение:

[\1(?<DaysInMonth>\d\s+) (?<FirstTitle>[\w\s \]+)\] (?<SecondTitle>[\w\s \]+)$] 

говорит: я хочу соответствовать одному carácter из этого набора carácter:

\1(?<DaysInMonth>\d\s+) (?<FirstTitle>[\w\s \]+)\] (?<SecondTitle>[\w\s \]+)$ 
+0

Hi @ baddger964. Спасибо за ответ, я попробовал ваш шаблон регулярного выражения, кажется, что что-то не соответствует. Вот ссылка: [Ссылка] (https://regex101.com/r/7YPiUQ/2) – Reinhardt

+0

попробуйте это https://regex101.com/r/7YPiUQ/4 – baddger964

+0

это регулярное выражение работает на v4, но не в v2 i не знаю почему – baddger964

0

Нравится? Вот пример нормального регулярного выражения, если вы заходите.

https://regex101.com/r/wLBj7Z/1

+0

Привет @ Лукас Карневалли, конечно, это работает, но я хочу совместить несколько групп персонажей (Named Capture Groups). Поскольку я буду использовать его названные группы захвата со стороны сервера (asp.net C#). – Reinhardt

Смежные вопросы