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