регулярное выражение для этой строки для извлечения значения

#c# #java #html #regex

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

Вопрос:

  <input > [ <input type="hidden" value="263" />First Name] [kdkgh[ <br /> <input 567> ag [<input type="hidden" value="264" />Last Name] dg input value="345"
  

я хочу найти значение 263 и First Name внутри [] и 264 Last Name из 2-го [] , используя регулярное выражение, каким было бы регулярное выражение для этих результатов?

Спасибо

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

1. Каков источник этой несколько необычной разметки? Это допустимый html?

2. Является ли эта строка примером полного ввода для сопоставителя или просто меньшей частью? И действительно ли вас не волнует, будет ли ответ для c # или java?

3. это часть html-тега, он будет сгенерирован автоматически, и я должен получить значение и имя здесь, например «<тип ввода=»скрытое» значение =»263″ /> Имя]» значение равно: 263, а имя равно: First Name

4. @fean вам действительно следует исправить то, что дает вам этот нелепый формат текста / разметки.

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

Ответ №1:

         const string TestData =
            " <input > [ <input type="hidden" value="263" />First Name] [kdkgh[ <br /> <input 567> ag [<input type="hidden" value="264" />Last Name] dg input value="345" ";
        var r = new Regex(@"[s*<input type=""hidden"" value=""([^]] )"" />([^]] )]");
        var matches = r.Matches(TestData);
        Console.WriteLine("{0}, {1}", matches[0].Groups[1].Value, matches[0].Groups[2].Value);
        Console.WriteLine("{0}, {1}", matches[1].Groups[1].Value, matches[1].Groups[2].Value);
  

Вы могли бы попробовать что-то подобное, хотя это приведет к сбою, если где-то еще есть пробелы или если ваши строковые значения содержат «]»

Ответ №2:

Я не думаю, что вам следует это делать (см. Ваши комментарии). Но попробуйте что-то вроде…

 <input type="hidden" value="(.*?)" />(.*?)]
  

Пример здесь

Ответ №3:

Эта разметка выглядит безумно, но это позволит найти нужные вам соответствия:

 [. ?value="(d )"s/>([^]] )]