public parseSearchRequest(): RegExp { if (this.searchString === '') { return null; } // Try to create a RegExp out of the params let multiline: boolean; if (this.isRegex) { multiline = SearchParams._isMultilineRegexSource(this.searchString); } else { multiline = (this.searchString.indexOf('\n') >= 0); } let regex: RegExp = null; try { regex = strings.createRegExp(this.searchString, this.isRegex, { matchCase: this.matchCase, wholeWord: this.wholeWord, multiline, global: true }); } catch (err) { return null; } if (!regex) { return null; } return regex; }
private _rangeIsMatch(range:Range): boolean { let selection = this._editor.getSelection(); let selectionText = this._editor.getModel().getValueInRange(selection); let regexp = strings.createRegExp(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord, true); let m = selectionText.match(regexp); return (m && m[0].length === selectionText.length); }
private getReplaceString(matchedString:string): string { if (!this._state.isRegex) { return this._state.replaceString; } let regexp = strings.createRegExp(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord, true); // Parse the replace string to support that \t or \n mean the right thing let parsedReplaceString = parseReplaceString(this._state.replaceString); return matchedString.replace(regexp, parsedReplaceString); }
public parseSearchRequest(): SearchData { if (this.searchString === '') { return null; } // Try to create a RegExp out of the params let multiline: boolean; if (this.isRegex) { multiline = SearchParams._isMultilineRegexSource(this.searchString); } else { multiline = (this.searchString.indexOf('\n') >= 0); } let regex: RegExp = null; try { regex = strings.createRegExp(this.searchString, this.isRegex, { matchCase: this.matchCase, wholeWord: false, multiline: multiline, global: true }); } catch (err) { return null; } if (!regex) { return null; } let canUseSimpleSearch = (!this.isRegex && !multiline); if (canUseSimpleSearch && this.searchString.toLowerCase() !== this.searchString.toUpperCase()) { // casing might make a difference canUseSimpleSearch = this.matchCase; } return new SearchData(regex, this.wordSeparators ? getMapForWordSeparators(this.wordSeparators) : null, canUseSimpleSearch ? this.searchString : null); }
function createOrRegex(pieces:string[]): RegExp { let regexStr = `(${pieces.map(strings.escapeRegExpCharacters).join(')|(')})`; return strings.createRegExp(regexStr, true, false, false, false); }
function createBracketOrRegExp(pieces: string[]): RegExp { let regexStr = `(${pieces.map(prepareBracketForRegExp).join(')|(')})`; return strings.createRegExp(regexStr, true); }