<?php
$tekst = 'aaa, aaa, aaa, aaaa, aa, aaaa. aa! aaaaa,aaa aaa aa, aaaa
fdfds dsd, dsf
awl, abcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcbabcba. dsf,
dsf dsf';
preg_match_all( '/(?:[[:alnum:][:punct:][:blank:]]{1,20}(?=b)[[:punct:][:blank:]]*|[[:alnum:]]+[[:blank:][:punct:]]+)/', $tekst, $matches );
?>
1.
\\b, czyli pocz±tek/koniec wyrazu, jest umieszczony zaraz przed pierwszym/po ostatnim znaku alfanumerycznym wyrazu, a nie zaraz po znaku interpunkcyjnym znajduj±cym siê za tym wyrazem. Dlatego zaraz po "przewidywaniu" nale¿a³o jeszcze umie¶ciæ klasê znaków interpunkcyjnych oraz znaków bia³ych.
2. Do mojego wyra¿enia doda³em alternacjê. Je¶li pierwsza czê¶æ (czyli nieco przerobione twoje wyra¿enie) nie zostanie dopasowana, to mechanizm wyra¿eñ spróbuje dopasowaæ drug± czê¶æ, która wy³apie d³u¿sze wyrazy.
Cytat("domis86")
olej regexpa (...)
Czasami mysle ze regexpy zostaly stworzone aby utrudnic ludziom zycie
