Regex не жадные именованные группы захвата - PullRequest
0 голосов
/ 19 декабря 2018

Мне нужно проанализировать приведенный ниже текст и прочитать значение для идентификатора и имени, а name не обязательно .Я получаю 'txt' name = "thistext 'в качестве значения для id.

input id =" txt "name =" thistext "

Это регулярное выражениеЯ использую -

input\s+id="(?<id>.*)("+?)(?:(\s+name="(?<name>.*)(.*?")))?

Полный матч 0-30 input id="txt" name="thistext" Группа id 10-29 txt" name="thistext Группа 2. 29-30 "

1 Ответ

0 голосов
/ 19 декабря 2018

Ваше регулярное выражение было почти правильным, за исключением того, что вам нужно было сделать не жадный захват в вашей именованной группе id и изменить это регулярное выражение на

input\s+id="(?<id>.*?)("+?)(?:(\s+name="(?<name>.*)(.*?")))?

Демо

Кроме того, ваше регулярное выражение является чрезмерно сложным, что вы можете упростить, как это,

input\s+id="(?<id>[^"]*)"(?:\s+name="(?<name>[^"]*)")?

Демонстрация для лучшего регулярного выражения

...