Расширенный тип границ в регулярных выражениях

Темы:

Карл Уильямсон работает над реализацией выражения \b{...}, как расширенного варианта \b для задания типа границ в регулярных выражениях.

В Perl 5.22 появятся три варианта таких конструкций:

  1. \b{gcb} — граница кластера графемы (кластер графемы, это две или более кодовых точек образующих один символ, например , состоящий из латинской g и знака двух точек)
  2. \b{cb} — граница предложений. Будет срабатывать там, где по правилам Юникода происходит разделение предложений. Правда предложение Mr. Jones всё равно будет считаться двумя предложениями.
  3. \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} в своей области определения.