{ "scopeName": "source.lex.regexp", "patterns": [ { "include": "#main" } ], "repository": { "alternation": { "name": "keyword.operator.logical.or.lex", "match": "\\|" }, "anchors": { "patterns": [ { "name": "keyword.control.anchor.line-start.lex", "match": "\\^" }, { "name": "keyword.control.anchor.line-end.lex", "match": "\\$" }, { "name": "keyword.control.anchor.eof.lex", "match": "(\u003c\u003c)EOF(\u003e\u003e)", "captures": { "1": { "name": "punctuation.definition.angle.bracket.begin.lex" }, "2": { "name": "punctuation.definition.angle.bracket.end.lex" } } } ] }, "class": { "name": "meta.character-class.set.lex", "begin": "(\\[)(\\^)?(-)?", "end": "\\]", "patterns": [ { "include": "#escapes" }, { "include": "#expressions" }, { "name": "punctuation.separator.range.dash.lex", "match": "-(?!\\])" }, { "name": "constant.single.character.character-class.lex", "match": "." } ], "beginCaptures": { "1": { "name": "punctuation.definition.character-class.set.begin.lex" }, "2": { "name": "keyword.operator.logical.not.lex" }, "3": { "name": "constant.single.character.character-class.lex" } }, "endCaptures": { "0": { "name": "punctuation.definition.character-class.set.end.lex" } } }, "escapes": { "patterns": [ { "name": "constant.character.escape.codepoint.octal.lex", "match": "\\\\[0-7]{3}" }, { "name": "constant.character.escape.codepoint.hexadecimal.hex.lex", "match": "\\\\[xX][A-Fa-f0-9]{2}" }, { "name": "constant.character.escape.lex", "match": "\\\\." } ] }, "expansion": { "name": "meta.expansion.lex", "match": "(\\{)([^{}\\s]+)(\\})", "captures": { "1": { "name": "punctuation.definition.expansion.bracket.curly.begin.lex" }, "2": { "name": "variable.parameter.reference.lex" }, "3": { "name": "punctuation.definition.expansion.bracket.curly.end.lex" } } }, "expressions": { "name": "constant.language.posix.$2-char.character-class.lex", "match": "(?x)\n(\\[:)\n(alnum|alpha|blank|cntrl|digit|graph\n|lower|print|punct|space|upper|xdigit)\n(:\\])", "captures": { "1": { "name": "punctuation.definition.character-class.set.begin.lex" }, "2": { "name": "support.constant.posix-class.lex" }, "3": { "name": "punctuation.definition.character-class.set.end.lex" } } }, "lookahead": { "name": "keyword.operator.logical.and.lookahead.lex", "match": "/" }, "main": { "patterns": [ { "include": "#wildcard" }, { "include": "#alternation" }, { "include": "#lookahead" }, { "include": "#anchors" }, { "include": "#start-condition" }, { "include": "#quantifier" }, { "include": "#string" }, { "include": "#expansion" }, { "include": "#quantifier-range" }, { "include": "#class" }, { "include": "#subpattern" }, { "include": "#escapes" } ] }, "quantifier": { "name": "keyword.operator.quantifier.lex", "match": "[*+?]" }, "quantifier-range": { "name": "keyword.operator.quantifier.specific.lex", "match": "({)(?:([0-9]+)(?:(,)([0-9]*))?|(,)([0-9]+))(})", "captures": { "1": { "name": "punctuation.definition.quantifier.bracket.curly.begin.lex" }, "2": { "name": "keyword.operator.quantifier.min.lex" }, "3": { "name": "punctuation.delimiter.comma.lex" }, "4": { "name": "keyword.operator.quantifier.max.lex" }, "5": { "name": "punctuation.delimiter.comma.lex" }, "6": { "name": "keyword.operator.quantifier.max.lex" }, "7": { "name": "punctuation.definition.quantifier.bracket.curly.end.lex" } } }, "start-condition": { "name": "meta.start-condition.lex", "begin": "\u003c", "end": "\u003e|(?=$)", "patterns": [ { "name": "keyword.operator.wildcard.condition.lex", "match": "\\*" }, { "name": "punctuation.delimiter.separator.comma.lex", "match": "," }, { "name": "constant.language.condition.name.lex", "match": "[^\u003c\u003e*,\\s]+" } ], "beginCaptures": { "0": { "name": "punctuation.definition.angle.bracket.begin.lex" } }, "endCaptures": { "0": { "name": "punctuation.definition.angle.bracket.end.lex" } } }, "string": { "name": "string.quoted.double.lex", "begin": "\"", "end": "\"", "patterns": [ { "include": "#escapes" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.lex" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.lex" } } }, "subpattern": { "name": "meta.group.regexp", "begin": "\\(", "end": "\\)", "patterns": [ { "include": "#main" } ], "beginCaptures": { "0": { "name": "punctuation.definition.group.begin.lex" } }, "endCaptures": { "0": { "name": "punctuation.definition.group.end.lex" } } }, "wildcard": { "name": "constant.character.wildcard.dot.match.any.lex", "match": "\\." } } }