#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/>([^]] )]