Расширенный тип границ в регулярных выражениях
Карл Уильямсон работает над реализацией выражения \b{...}
, как расширенного
варианта \b
для задания типа границ в регулярных выражениях.
В Perl 5.22 появятся три варианта таких конструкций:
\b{gcb}
— граница кластера графемы (кластер графемы, это две или более кодовых точек образующих один символ, напримерg̈
, состоящий из латинскойg
и знака двух точек)\b{cb}
— граница предложений. Будет срабатывать там, где по правилам Юникода происходит разделение предложений. Правда предложениеMr. Jones
всё равно будет считаться двумя предложениями.\b{wb}
— граница слова.
Кроме того Юникод определяет и перенос строки и его можно реализовать как
\b{lb}
, но на CPAN уже есть
Unicode::LineBreak.
Простое выражение \b
определяет границу между символами \w
и \W
. Хотя
большинство новичков почему-то считают, что это граница между \s
и \S
. Есть
мысль реализовать такое как \b{space}
, но на самом деле скорее всего имеется
ввиду \b{wb}
, который действительно хорошо ищет границы для естественных
языков, например, он правильно выделит слово don't
в предложении ... don't.
,
включив апостроф, но исключив точку.
В этой связи Карл предлагает задать новый флаг для прагмы re
use re "/w"
который бы по умолчанию рассматривал обычный \b
как \b{wb}
в своей области
определения.