TextMate-style syntax highlighting in PHP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

178 lines
4.7 KiB

{
"name": "Regular Expressions (Python)",
"scopeName": "source.regexp.python",
"foldingStartMarker": "(/\\*|\\{|\\()",
"foldingStopMarker": "(\\*/|\\}|\\))",
"fileTypes": [
"re"
],
"patterns": [
{
"match": "\\\\[bBAZzG]|\\^|\\$",
"name": "keyword.control.anchor.regexp"
},
{
"match": "\\\\[1-9][0-9]?",
"name": "keyword.other.back-reference.regexp"
},
{
"match": "\\\\.",
"name": "constant.character.escape.backslash.regexp"
},
{
"match": "[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
"name": "keyword.operator.quantifier.regexp"
},
{
"match": "\\|",
"name": "keyword.operator.or.regexp"
},
{
"begin": "\\(\\?\\#",
"end": "\\)",
"name": "comment.block.regexp"
},
{
"comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
"match": "(?<=^|\\s)#\\s[[a-zA-Z0-9,. \\t?!-:][^\\x{00}-\\x{7F}]]*$",
"name": "comment.line.number-sign.regexp"
},
{
"match": "\\(\\?[iLmsux]+\\)",
"name": "keyword.other.option-toggle.regexp"
},
{
"match": "(\\()(\\?P=([a-zA-Z_][a-zA-Z_0-9]*\\w*))(\\))",
"name": "keyword.other.back-reference.named.regexp"
},
{
"begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
},
"2": {
"name": "punctuation.definition.group.assertion.regexp"
},
"3": {
"name": "meta.assertion.look-ahead.regexp"
},
"4": {
"name": "meta.assertion.negative-look-ahead.regexp"
},
"5": {
"name": "meta.assertion.look-behind.regexp"
},
"6": {
"name": "meta.assertion.negative-look-behind.regexp"
}
},
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
}
},
"name": "meta.group.assertion.regexp",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\()(\\?\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
},
"2": {
"name": "punctuation.definition.group.assertion.conditional.regexp"
},
"3": {
"name": "entity.name.section.back-reference.regexp"
}
},
"comment": "we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.",
"end": "(\\))",
"name": "meta.group.assertion.conditional.regexp",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\()((\\?P<)([a-z]\\w*)(>)|(\\?:))?",
"beginCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
},
"3": {
"name": "punctuation.definition.group.capture.regexp"
},
"4": {
"name": "entity.name.section.group.regexp"
},
"5": {
"name": "punctuation.definition.group.capture.regexp"
},
"6": {
"name": "punctuation.definition.group.no-capture.regexp"
}
},
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.group.regexp"
}
},
"name": "meta.group.regexp",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "(\\[)(\\^)?",
"beginCaptures": {
"1": {
"name": "punctuation.definition.character-class.begin.regexp"
},
"2": {
"name": "keyword.operator.negation.regexp"
}
},
"end": "(?!\\G)\\]",
"endCaptures": {
"0": {
"name": "punctuation.definition.character-class.end.regexp"
}
},
"name": "constant.other.character-class.set.regexp",
"patterns": [
{
"match": "\\\\[wWsSdDhH]",
"name": "constant.character.character-class.regexp"
},
{
"match": "\\\\.",
"name": "constant.character.escape.backslash.regexp"
},
{
"captures": {
"2": {
"name": "constant.character.escape.backslash.regexp"
},
"4": {
"name": "constant.character.escape.backslash.regexp"
}
},
"match": "((\\\\.)|.)\\-((\\\\.)|[^\\]])",
"name": "constant.other.character-class.range.regexp"
}
]
}
]
}