LINUX.ORG.RU

Не могу усмирить регулярку

 , ,


0

2

/<.*(\w{3}).*>/im
текст: < azaza azaz oza aza rr > aza aza aza
нужно что бы в «кармашки» пападало и oza и aza и что-либо еще, если оно там вдруг появится и будет соответствовать (\w){3}. В текущем состоянии попадает только последнее.



Последнее исправление: Nar (всего исправлений: 2)
Ответ на: комментарий от anonymous

Криво скопировалось, поправил.

Nar
() автор топика
Ответ на: комментарий от Deleted

нужно, чтобы отдельно искались слова из трех букв, в зависимости от того, что вокруг них?

Именно. Причем что бы искались все слова из трех букв. Их количество заранее не известно.

тебе, пожалуй, вот эта штука нужна тогда

Или не то или я что-то не так понял т.к. результат не изменился: http://rghost.ru/75Bpskxww/image.png

Nar
() автор топика

не совсем то

"< azaza azaz oza aza rr > aza aza aza" =~ /<.(.*?).>/

for (split / /, $1) { say if length == 3 }
Deleted
()

Это проще за несколько шагов сделать, чтобы мозг себе не парить. Но JS вот так, например, можно


"< azaza azaz oza aza rr > aza aza aza< azaza azaz oza aza rr > aza aza aza"
 .match(/<[^>]*>/g)
 .map(function(s){return s.match(/\b\w{3}\b/g)})
 .reduce(function(x, y){return x.concat(y)})


>>>> [ 'oza', 'aza', 'oza', 'aza' ]

/

javaQest
()
Ответ на: комментарий от Nar

хм. у меня самого не получилось, судя по всему из-за этой фигни http://stackoverflow.com/a/9031483

то есть если учитывать правую галочку только, то так все норм
/(?<= )\w{3}(?= .*>)/g

а вот такая хрень не работает
/(?<=<.* )\w{3}(?= .*>)/g

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.