module

Highlight::JSRegex

Constants

B_RE = "(?:(?<![#{WORD}])(?=[#{WORD}])|(?<=[#{WORD}])(?![#{WORD}]))"

\b: позиция между не-словом и словом либо словом и не-словом (ASCII)

BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\?<(?![=!])[^>]+>|\(\?'[^']+'|\(\??|\\([1-9][0-9]*)|\\./

См. core.js BACKREF_RE + _rewriteBackreferences: склейка альтернатив с перенумерацией бэкреференсов, каждая заворачивается в группу.

DIGIT_RE = "[0-9]"
NB_RE = "(?:(?<=[#{WORD}])(?=[#{WORD}])|(?<![#{WORD}])(?![#{WORD}]))"

\B: обе стороны одного рода

NDIGIT_RE = "[^0-9]"
NWORD_RE = "[^#{WORD}]"
WORD = "A-Za-z0-9_"
WORD_RE = "[#{WORD}]"

Class methods

count_match_groups(src : String) : Int32

Число захватывающих групп в паттерне. Тот же трюк, что в оригинале: new RegExp(src + '|').exec('') — добавление пустой альтернативы позволяет сопоставить пустую строку; size включает группу 0.

Source
rewrite_backreferences(regexps : Array(String), join_with : String) : String
Source
translate(src : String) : String

Переводит source JS-регекса в PCRE-совместимый source.

Source