2014-10-16 2 views
2

Итак, у меня есть этот файл с 4000 строк, и я хочу только напечатать строки с триплетами в нем. то есть.regex - как искать перекрывающиеся триплеты?

ADSKLF AZE GJSBN AZE KGRE

или

AFJEN ABABA JGORENFNEZJAJEO (перекрытием триплет)

Я попытался egrep '(...).*\1', но это, конечно, не печатает пересекающиеся из них. Очевидно, вы можете использовать внешний вид, чтобы решить эту проблему, но я не смог ответить на этот вопрос.

решаемыеhttp://regex101.com/r/hG3bO1/5

+0

на каком языке это? Является ли он чувствительным к регистру или нечувствительным к регистру? Могут ли небуквенные символы считаться частью триплетов? –

+0

У вас есть ссылка на то, где вы слышали об использовании lookaround, чтобы найти перекрывающиеся триплеты? – Zack

+0

Будет ли «BBBB» быть перекрывающимся триплетом? – Sam

ответ

0

попробовать это:

(?=((.)(.)(.)))(\2|\2\3|.+)\1 

DEMO

+1

Большое спасибо. Я бы никогда не подумал об этом. благодаря вам я придумал это решение [ссылка] (http://regex101.com/r/hG3bO1/3) –

+0

@gAFLOKGvh это приятно –

0

Вы можете попробовать ниже регулярное выражение.

(?=(.)(?=.\1)(.{2})\2)|(?=((.)\4\4))|(.{3})(?=.*?\5) 

DEMO

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