2012-04-30 3 views
0

Мне нужно разобрать некоторую строку из входного файла. Эти строки необходимы в Hadoop. Проблема в том, что эти строки находятся в тегах разметки.Соответствие содержимого внутри тега

Может кто-то предложить мне шаблон, чтобы соответствовать и хранить их

<id>INIcE89C561</id> <id>INIcE89C560</id> <id>Q1S5WLipQW2</id> 

мне нужна строка между идентификатором тегом. Все теги из разных входных файлов. Мне нужно использовать их как значение. В ключевой паре значений.

+0

Это выглядит так ужасно, как xml, это тот случай для всего входного файла? –

+0

некоторые из входных выборок является Lile аравия \t || INIcE89C560 || INIcE89C561 области \t || Q1S5WLipQW2 ASICs \t || Q1S5WLipQW2 INIcE89C561 INIcE89C56 на \t || Q1S5WLipQW2 бадминтона \t || Q1S5WLipQW2 –

ответ

3

Чтобы получить текст между тегом идентификатора вы можете использовать что-то вроде:

<id>([^<]*)</id> 

А затем извлечь первую захваченную группу (которая является вашим значение).

В общем, однако, регулярное выражение не является лучшим вариантом для синтаксического анализа XML.

Есть гораздо лучше подходящие синтаксические анализаторы XML, которые я рекомендую использовать.

Обратите внимание на учебник this.

+0

Наа , Это выглядит хорошо для меня. Тег id только в одной строке и только один раз. –

0

Вы можете попробовать использовать что-то вроде этого: <id>(.*?)</id>. Это должно соответствовать всем символам между тегами <id> и </id>. Проблема может заключаться в том, что группы текста, которые захватывает регулярное выражение, скорее всего, будут перезаписаны следующей группой текста, которую фиксирует регулярное выражение, что означает, что к концу дня у вас будет только последняя группа соответствующего текста.

Что я хотел бы порекомендовать вам, это сначала разделить их на пробелы (при условии, что вы получаете тот же текст, который вы опубликовали в качестве примера), а затем примените регулярное выражение для отдельных блоков. Кроме того, если есть больше тегов, чем это, я бы порекомендовал вам использовать другой способ извлечения вашей информации, так как regex's, где он точно не предназначен для извлечения информации из языков разметки.

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