芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/kwesioben.com/accufy/docs/assets/vendor/highlight.js/lib/regex.js
export function escape(value) { return new RegExp(value.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'm'); } export function source(re) { // if it's a regex get it's source, // otherwise it's a string already so just return it return (re && re.source) || re; } export function lookahead(regex) { return concat('(?=', regex, ')'); } export function concat(...args) { const joined = args.map((x) => source(x)).join(""); return joined; } export function countMatchGroups(re) { return (new RegExp(re.toString() + '|')).exec('').length - 1; } export function startsWith(re, lexeme) { var match = re && re.exec(lexeme); return match && match.index === 0; } // join logically computes regexps.join(separator), but fixes the // backreferences so they continue to match. // it also places each individual regular expression into it's own // match group, keeping track of the sequencing of those match groups // is currently an exercise for the caller. :-) export function join(regexps, separator) { // backreferenceRe matches an open parenthesis or backreference. To avoid // an incorrect parse, it additionally matches the following: // - [...] elements, where the meaning of parentheses and escapes change // - other escape sequences, so we do not misparse escape sequences as // interesting elements // - non-matching or lookahead parentheses, which do not capture. These // follow the '(' with a '?'. var backreferenceRe = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; var numCaptures = 0; var ret = ''; for (var i = 0; i < regexps.length; i++) { numCaptures += 1; var offset = numCaptures; var re = source(regexps[i]); if (i > 0) { ret += separator; } ret += "("; while (re.length > 0) { var match = backreferenceRe.exec(re); if (match == null) { ret += re; break; } ret += re.substring(0, match.index); re = re.substring(match.index + match[0].length); if (match[0][0] === '\\' && match[1]) { // Adjust the backreference. ret += '\\' + String(Number(match[1]) + offset); } else { ret += match[0]; if (match[0] === '(') { numCaptures++; } } } ret += ")"; } return ret; }