2014-12-19 3 views
0

Я получаю очень большую строку, содержащую n количество записей. Каждая запись состоит из 3 групп текста, первые 3 из которых заключены в угловые скобки. Каждая группа текста имеет длину 1-n символов. Этот общий шаблон повторяется в строке в течение 1-го раза. (см. пример ниже).Найти повторяющийся шаблон, который имеет повторяющийся шаблон

<text1a><text2a><text3a>text4a<text1b><text2b><text3b>text4b<text1c><text2c><text3c>text4c 
|--------single record-------||-------single record--------||-------single record--------| 

Используя выше в качестве входной строки, я пытаюсь разработать шаблон Искателя, что бы вернуться ко мне каждую отдельную запись в строке. Я пробовал много вариантов, но ничего не получаю, только первая запись или целая строка. Я прочитал много сообщений о повторении шаблонов и попытался применить принципы с небольшим успехом. Мне удалось найти IP-адреса, номера телефонов и другие шаблоны, которые могут повторяться в данной строке, но этот шаблон ускользает от меня. Заранее спасибо.

+3

Хорошо, покажите нам, что у вас есть до сих пор? Это, вероятно, поможет вам, не так ли? – Bono

+0

Этот шаблон должен выглядеть как [this] (https://regex101.com/r/dA6wZ5/1). Я добавил некоторые объяснения. Я думаю, вы не знаете, как использовать его в java. Это означает, что вы можете посмотреть [этот вопрос] (http://stackoverflow.com/questions/6020384/create-array-of-regex-matches) – HamZa

+0

Что с ним связано «повторяющийся шаблон»? Это псевдо-разделитель записей? Что произойдет, если есть разрыв? – sln

ответ

1

Я реализую это на Java. Решение я нашел следующий шаблон ...

String patternString = "(\\[.*?\\]){3}([^\\[])*"; 
Pattern pattern = Pattern.compile(patternString); 

Этого шаблон будет соответствовать записям (подстрока большей строки), состоящим из 3-х секций в квадратных скобках, содержащих любое количество символов, после чего любого количества символов для кронштейна, кроме (с указанием новой записи)

Спасибо за помощь.