solorice/vscode/extensions/magicstack.magicpython-1.1.0/grammars/MagicPython.tmLanguage
2022-04-28 20:54:44 +03:00

8604 lines
244 KiB
Plaintext

<!-- AUTOGENERATED FROM grammars/src/MagicPython.syntax.yaml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>MagicPython</string>
<key>scopeName</key>
<string>source.python</string>
<key>fileTypes</key>
<array>
<string>py</string>
<string>py3</string>
<string>rpy</string>
<string>pyw</string>
<string>cpy</string>
<string>pyi</string>
<string>SConstruct</string>
<string>Sconstruct</string>
<string>sconstruct</string>
<string>SConscript</string>
<string>gyp</string>
<string>gypi</string>
<string>wsgi</string>
<string>kv</string>
<string>Snakefile</string>
<string>tac</string>
</array>
<key>first_line_match</key>
<string>^#![ \t]*/.*\bpython[\d\.]*\b</string>
<key>firstLineMatch</key>
<string>^#![ \t]*/.*\bpython[\d\.]*\b</string>
<key>uuid</key>
<string>742deb57-6e38-4192-bed6-410746efd85d</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#statement</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>impossible</key>
<dict>
<key>comment</key>
<string>This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.</string>
<key>match</key>
<string>$.^</string>
</dict>
<key>statement</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#import</string>
</dict>
<dict>
<key>include</key>
<string>#class-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#function-declaration</string>
</dict>
<dict>
<key>include</key>
<string>#statement-keyword</string>
</dict>
<dict>
<key>include</key>
<string>#assignment-operator</string>
</dict>
<dict>
<key>include</key>
<string>#decorator</string>
</dict>
<dict>
<key>include</key>
<string>#docstring-statement</string>
</dict>
<dict>
<key>include</key>
<string>#semicolon</string>
</dict>
</array>
</dict>
<key>semicolon</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>invalid.deprecated.semicolon.python</string>
<key>match</key>
<string>\;$</string>
</dict>
</array>
</dict>
<key>comments</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>comment.line.number-sign.python</string>
<key>contentName</key>
<string>meta.typehint.comment.python</string>
<key>begin</key>
<string>(?x)
(?:
\# \s* (type:)
\s*+ (?# we want `\s*+` which is possessive quantifier since
we do not actually want to backtrack when matching
whitespace here)
(?! $ | \#)
)
</string>
<key>end</key>
<string>(?:$|(?=\#))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.typehint.comment.python</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.typehint.directive.notation.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>comment.typehint.ignore.notation.python</string>
<key>match</key>
<string>(?x)
\G ignore
(?= \s* (?: $ | \#))
</string>
</dict>
<dict>
<key>name</key>
<string>comment.typehint.type.notation.python</string>
<key>match</key>
<string>(?x)
(?&lt;!\.)\b(
bool | bytes | float | int | object | str
| List | Dict | Iterable | Sequence | Set
| FrozenSet | Callable | Union | Tuple
| Any | None
)\b
</string>
</dict>
<dict>
<key>name</key>
<string>comment.typehint.punctuation.notation.python</string>
<key>match</key>
<string>([\[\]\(\),\.\=\*]|(-&gt;))</string>
</dict>
<dict>
<key>name</key>
<string>comment.typehint.variable.notation.python</string>
<key>match</key>
<string>([[:alpha:]_]\w*)</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#comments-base</string>
</dict>
</array>
</dict>
<key>docstring-statement</key>
<dict>
<key>begin</key>
<string>^(?=\s*[rR]?(\'\'\'|\"\"\"|\'|\"))</string>
<key>comment</key>
<string>the string either terminates correctly or by the beginning of a new line (this is for single line docstrings that aren't terminated) AND it's not followed by another docstring</string>
<key>end</key>
<string>((?&lt;=\1)|^)(?!\s*[rR]?(\'\'\'|\"\"\"|\'|\"))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#docstring</string>
</dict>
</array>
</dict>
<key>docstring</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>string.quoted.docstring.multi.python</string>
<key>begin</key>
<string>(\'\'\'|\"\"\")</string>
<key>end</key>
<string>(\1)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#docstring-prompt</string>
</dict>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
<dict>
<key>include</key>
<string>#docstring-guts-unicode</string>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>string.quoted.docstring.raw.multi.python</string>
<key>begin</key>
<string>([rR])(\'\'\'|\"\"\")</string>
<key>end</key>
<string>(\2)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#docstring-prompt</string>
</dict>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>string.quoted.docstring.single.python</string>
<key>begin</key>
<string>(\'|\")</string>
<key>end</key>
<string>(\1)|(\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
<dict>
<key>include</key>
<string>#docstring-guts-unicode</string>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>string.quoted.docstring.raw.single.python</string>
<key>begin</key>
<string>([rR])(\'|\")</string>
<key>end</key>
<string>(\2)|(\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>docstring-guts-unicode</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#escape-sequence</string>
</dict>
<dict>
<key>include</key>
<string>#string-line-continuation</string>
</dict>
</array>
</dict>
<key>docstring-prompt</key>
<dict>
<key>match</key>
<string>(?x)
(?:
(?:^|\G) \s* (?# '\G' is necessary for ST)
((?:&gt;&gt;&gt;|\.\.\.) \s) (?=\s*\S)
)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.flow.python</string>
</dict>
</dict>
</dict>
<key>statement-keyword</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
<key>match</key>
<string>\b((async\s+)?\s*def)\b</string>
</dict>
<dict>
<key>name</key>
<string>keyword.control.flow.python</string>
<key>match</key>
<string>(?x)
\b(?&lt;!\.)(
as | async | continue | del | assert | break | finally | for
| from | elif | else | if | except | pass | raise
| return | try | while | with
)\b
</string>
</dict>
<dict>
<key>name</key>
<string>storage.modifier.declaration.python</string>
<key>match</key>
<string>(?x)
\b(?&lt;!\.)(
global | nonlocal
)\b
</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.class.python</string>
<key>match</key>
<string>\b(?&lt;!\.)(class)\b</string>
</dict>
</array>
</dict>
<key>expression-bare</key>
<dict>
<key>comment</key>
<string>valid Python expressions w/o comments and line continuation</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#backticks</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-anno</string>
</dict>
<dict>
<key>include</key>
<string>#literal</string>
</dict>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#lambda</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-operator</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>include</key>
<string>#curly-braces</string>
</dict>
<dict>
<key>include</key>
<string>#item-access</string>
</dict>
<dict>
<key>include</key>
<string>#list</string>
</dict>
<dict>
<key>include</key>
<string>#round-braces</string>
</dict>
<dict>
<key>include</key>
<string>#function-call</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-functions</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-types</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-exceptions</string>
</dict>
<dict>
<key>include</key>
<string>#magic-names</string>
</dict>
<dict>
<key>include</key>
<string>#special-names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>include</key>
<string>#special-variables</string>
</dict>
<dict>
<key>include</key>
<string>#ellipsis</string>
</dict>
<dict>
<key>include</key>
<string>#punctuation</string>
</dict>
<dict>
<key>include</key>
<string>#line-continuation</string>
</dict>
</array>
</dict>
<key>expression-base</key>
<dict>
<key>comment</key>
<string>valid Python expressions with comments and line continuation</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>include</key>
<string>#expression-bare</string>
</dict>
<dict>
<key>include</key>
<string>#line-continuation</string>
</dict>
</array>
</dict>
<key>expression</key>
<dict>
<key>comment</key>
<string>All valid Python expressions</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression-base</string>
</dict>
<dict>
<key>include</key>
<string>#member-access</string>
</dict>
<dict>
<key>comment</key>
<string>Tokenize identifiers to help linters</string>
<key>match</key>
<string>(?x) \b ([[:alpha:]_]\w*) \b</string>
</dict>
</array>
</dict>
<key>member-access</key>
<dict>
<key>begin</key>
<string>(\.)\s*(?!\.)</string>
<key>end</key>
<string>(?x)
# stop when you've just read non-whitespace followed by non-word
# i.e. when finished reading an identifier or function call
(?&lt;=\S)(?=\W) |
# stop when seeing the start of something that's not a word,
# i.e. when seeing a non-identifier
(^|(?&lt;=\s))(?=[^\\\w\s]) |
$
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.period.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function-call</string>
</dict>
<dict>
<key>include</key>
<string>#member-access-base</string>
</dict>
</array>
</dict>
<key>member-access-base</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#magic-names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-object-name</string>
</dict>
<dict>
<key>include</key>
<string>#special-names</string>
</dict>
<dict>
<key>include</key>
<string>#line-continuation</string>
</dict>
<dict>
<key>include</key>
<string>#item-access</string>
</dict>
</array>
</dict>
<key>special-names</key>
<dict>
<key>name</key>
<string>constant.other.caps.python</string>
<key>match</key>
<string>(?x)
\b
# we want to see "enough", meaning 2 or more upper-case
# letters in the beginning of the constant
#
# for more details refer to:
# https://github.com/MagicStack/MagicPython/issues/42
(
_* [[:upper:]] [_\d]* [[:upper:]]
)
[[:upper:]\d]* (_\w*)?
\b
</string>
</dict>
<key>curly-braces</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>end</key>
<string>\}</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.dict.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.dict.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>punctuation.separator.dict.python</string>
<key>match</key>
<string>:</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>list</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.list.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.list.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>round-braces</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>line-continuation</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(\\)\s*(\S.*$\n?)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.continuation.line.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.line.continuation.python</string>
</dict>
</dict>
</dict>
<dict>
<key>begin</key>
<string>(\\)\s*$\n?</string>
<key>end</key>
<string>(?x)
(?=^\s*$)
|
(?! (\s* [rR]? (\'\'\'|\"\"\"|\'|\"))
|
(\G $) (?# '\G' is necessary for ST)
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.continuation.line.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>assignment-operator</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
<key>match</key>
<string>(?x)
&lt;&lt;= | &gt;&gt;= | //= | \*\*=
| \+= | -= | /= | @=
| \*= | %= | ~= | \^= | &amp;= | \|=
| =(?!=)
</string>
</dict>
<key>operator</key>
<dict>
<key>match</key>
<string>(?x)
\b(?&lt;!\.)
(?:
(and | or | not | in | is) (?# 1)
|
(for | if | else | await | (?:yield(?:\s+from)?)) (?# 2)
)
(?!\s*:)\b
| (&lt;&lt; | &gt;&gt; | &amp; | \| | \^ | ~) (?# 3)
| (\*\* | \* | \+ | - | % | // | / | @) (?# 4)
| (!= | == | &gt;= | &lt;= | &lt; | &gt;) (?# 5)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.logical.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.flow.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.bitwise.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.operator.arithmetic.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.comparison.python</string>
</dict>
</dict>
</dict>
<key>punctuation</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>punctuation.separator.colon.python</string>
<key>match</key>
<string>:</string>
</dict>
<dict>
<key>name</key>
<string>punctuation.separator.element.python</string>
<key>match</key>
<string>,</string>
</dict>
</array>
</dict>
<key>literal</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>constant.language.python</string>
<key>match</key>
<string>\b(True|False|None|NotImplemented|Ellipsis)\b</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
</array>
</dict>
<key>number</key>
<dict>
<key>name</key>
<string>constant.numeric.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#number-float</string>
</dict>
<dict>
<key>include</key>
<string>#number-dec</string>
</dict>
<dict>
<key>include</key>
<string>#number-hex</string>
</dict>
<dict>
<key>include</key>
<string>#number-oct</string>
</dict>
<dict>
<key>include</key>
<string>#number-bin</string>
</dict>
<dict>
<key>include</key>
<string>#number-long</string>
</dict>
<dict>
<key>name</key>
<string>invalid.illegal.name.python</string>
<key>match</key>
<string>\b[0-9]+\w+</string>
</dict>
</array>
</dict>
<key>number-float</key>
<dict>
<key>name</key>
<string>constant.numeric.float.python</string>
<key>match</key>
<string>(?x)
(?&lt;! \w)(?:
(?:
\.[0-9](?: _?[0-9] )*
|
[0-9](?: _?[0-9] )* \. [0-9](?: _?[0-9] )*
|
[0-9](?: _?[0-9] )* \.
) (?: [eE][+-]?[0-9](?: _?[0-9] )* )?
|
[0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* )
)([jJ])?\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.imaginary.number.python</string>
</dict>
</dict>
</dict>
<key>number-dec</key>
<dict>
<key>name</key>
<string>constant.numeric.dec.python</string>
<key>match</key>
<string>(?x)
(?&lt;![\w\.])(?:
[1-9](?: _?[0-9] )*
|
0+
|
[0-9](?: _?[0-9] )* ([jJ])
|
0 ([0-9]+)(?![eE\.])
)\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.imaginary.number.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.dec.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.dec.python</string>
</dict>
</dict>
</dict>
<key>number-hex</key>
<dict>
<key>name</key>
<string>constant.numeric.hex.python</string>
<key>match</key>
<string>(?x)
(?&lt;![\w\.])
(0[xX]) (_?[0-9a-fA-F])+
\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.number.python</string>
</dict>
</dict>
</dict>
<key>number-oct</key>
<dict>
<key>name</key>
<string>constant.numeric.oct.python</string>
<key>match</key>
<string>(?x)
(?&lt;![\w\.])
(0[oO]) (_?[0-7])+
\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.number.python</string>
</dict>
</dict>
</dict>
<key>number-bin</key>
<dict>
<key>name</key>
<string>constant.numeric.bin.python</string>
<key>match</key>
<string>(?x)
(?&lt;![\w\.])
(0[bB]) (_?[01])+
\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.number.python</string>
</dict>
</dict>
</dict>
<key>number-long</key>
<dict>
<key>name</key>
<string>constant.numeric.bin.python</string>
<key>comment</key>
<string>this is to support python2 syntax for long ints</string>
<key>match</key>
<string>(?x)
(?&lt;![\w\.])
([1-9][0-9]* | 0) ([lL])
\b
</string>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.number.python</string>
</dict>
</dict>
</dict>
<key>regexp</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-single-three-line</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-double-three-line</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-single-one-line</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-double-one-line</string>
</dict>
<dict>
<key>include</key>
<string>#fregexp-single-three-line</string>
</dict>
<dict>
<key>include</key>
<string>#fregexp-double-three-line</string>
</dict>
<dict>
<key>include</key>
<string>#fregexp-single-one-line</string>
</dict>
<dict>
<key>include</key>
<string>#fregexp-double-one-line</string>
</dict>
</array>
</dict>
<key>string</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-quoted-single-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-bin-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-bin-quoted-single-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-raw-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-raw-quoted-single-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-raw-bin-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#string-raw-bin-quoted-single-line</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-fnorm-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-fnorm-quoted-single-line</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-normf-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-normf-quoted-single-line</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-raw-quoted-multi-line</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-raw-quoted-single-line</string>
</dict>
</array>
</dict>
<key>string-unicode-guts</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-entity</string>
</dict>
<dict>
<key>include</key>
<string>#string-brace-formatting</string>
</dict>
</array>
</dict>
<key>string-consume-escape</key>
<dict>
<key>match</key>
<string>\\['"\n\\]</string>
</dict>
<key>string-raw-guts</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#string-formatting</string>
</dict>
<dict>
<key>include</key>
<string>#string-brace-formatting</string>
</dict>
</array>
</dict>
<key>string-raw-bin-guts</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#string-formatting</string>
</dict>
</array>
</dict>
<key>string-entity</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence</string>
</dict>
<dict>
<key>include</key>
<string>#string-line-continuation</string>
</dict>
<dict>
<key>include</key>
<string>#string-formatting</string>
</dict>
</array>
</dict>
<key>fstring-guts</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#escape-sequence</string>
</dict>
<dict>
<key>include</key>
<string>#string-line-continuation</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-formatting</string>
</dict>
</array>
</dict>
<key>fstring-raw-guts</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-formatting</string>
</dict>
</array>
</dict>
<key>fstring-illegal-single-brace</key>
<dict>
<key>comment</key>
<string>it is illegal to have a multiline brace inside a single-line string</string>
<key>begin</key>
<string>(\{)(?=[^\n}]*$\n?)</string>
<key>end</key>
<string>(\})|(?=\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-terminator-single</string>
</dict>
<dict>
<key>include</key>
<string>#f-expression</string>
</dict>
</array>
</dict>
<key>fstring-illegal-multi-brace</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#impossible</string>
</dict>
</array>
</dict>
<key>f-expression</key>
<dict>
<key>comment</key>
<string>All valid Python expressions, except comments and line cont</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression-bare</string>
</dict>
<dict>
<key>include</key>
<string>#member-access</string>
</dict>
<dict>
<key>comment</key>
<string>Tokenize identifiers to help linters</string>
<key>match</key>
<string>(?x) \b ([[:alpha:]_]\w*) \b</string>
</dict>
</array>
</dict>
<key>escape-sequence-unicode</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>constant.character.escape.python</string>
<key>match</key>
<string>(?x)
\\ (
u[0-9A-Fa-f]{4}
| U[0-9A-Fa-f]{8}
| N\{[\w\s]+?\}
)
</string>
</dict>
</array>
</dict>
<key>escape-sequence</key>
<dict>
<key>name</key>
<string>constant.character.escape.python</string>
<key>match</key>
<string>(?x)
\\ (
x[0-9A-Fa-f]{2}
| [0-7]{1,3}
| [\\"'abfnrtv]
)
</string>
</dict>
<key>string-line-continuation</key>
<dict>
<key>name</key>
<string>constant.language.python</string>
<key>match</key>
<string>\\$</string>
</dict>
<key>string-formatting</key>
<dict>
<key>name</key>
<string>meta.format.percent.python</string>
<key>match</key>
<string>(?x)
(
% (\([\w\s]*\))?
[-+#0 ]*
(\d+|\*)? (\.(\d+|\*))?
([hlL])?
[diouxXeEfFgGcrsab%]
)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
</dict>
<key>string-brace-formatting</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>meta.format.brace.python</string>
<key>match</key>
<string>(?x)
(
{{ | }}
| (?:
{
\w* (\.[[:alpha:]_]\w* | \[[^\]'"]+\])*
(![rsa])?
( : \w? [&lt;&gt;=^]? [-+ ]? \#?
\d* ,? (\.\d+)? [bcdeEfFgGnosxX%]? )?
})
)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>meta.format.brace.python</string>
<key>match</key>
<string>(?x)
(
{
\w* (\.[[:alpha:]_]\w* | \[[^\]'"]+\])*
(![rsa])?
(:)
[^'"{}\n]* (?:
\{ [^'"}\n]*? \} [^'"{}\n]*
)*
}
)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
</dict>
</dict>
</array>
</dict>
<key>fstring-formatting</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-formatting-braces</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-formatting-singe-brace</string>
</dict>
</array>
</dict>
<key>fstring-formatting-singe-brace</key>
<dict>
<key>name</key>
<string>invalid.illegal.brace.python</string>
<key>match</key>
<string>(}(?!}))</string>
</dict>
<key>import</key>
<dict>
<key>comment</key>
<string>Import statements
</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)
\s* \b(from) \s*(\.+)\s* (import\b)?
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.import.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.period.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.control.import.python</string>
</dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>keyword.control.import.python</string>
<key>match</key>
<string>\b(?&lt;!\.)import\b</string>
</dict>
</array>
</dict>
<key>class-declaration</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>meta.class.python</string>
<key>begin</key>
<string>(?x)
\s*(class)\s+
(?=
[[:alpha:]_]\w* \s* (:|\()
)
</string>
<key>end</key>
<string>(:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.class.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.class.begin.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#class-name</string>
</dict>
<dict>
<key>include</key>
<string>#class-inheritance</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>class-name</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#illegal-object-name</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-possible-callables</string>
</dict>
<dict>
<key>name</key>
<string>entity.name.type.class.python</string>
<key>match</key>
<string>(?x)
\b ([[:alpha:]_]\w*) \b
</string>
</dict>
</array>
</dict>
<key>class-inheritance</key>
<dict>
<key>name</key>
<string>meta.class.inheritance.python</string>
<key>begin</key>
<string>(\()</string>
<key>end</key>
<string>(\))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.inheritance.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.inheritance.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>keyword.operator.unpacking.arguments.python</string>
<key>match</key>
<string>(\*\*|\*)</string>
</dict>
<dict>
<key>name</key>
<string>punctuation.separator.inheritance.python</string>
<key>match</key>
<string>,</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
<key>match</key>
<string>=(?!=)</string>
</dict>
<dict>
<key>name</key>
<string>support.type.metaclass.python</string>
<key>match</key>
<string>\bmetaclass\b</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>include</key>
<string>#class-kwarg</string>
</dict>
<dict>
<key>include</key>
<string>#call-wrapper-inheritance</string>
</dict>
<dict>
<key>include</key>
<string>#expression-base</string>
</dict>
<dict>
<key>include</key>
<string>#member-access-class</string>
</dict>
<dict>
<key>include</key>
<string>#inheritance-identifier</string>
</dict>
</array>
</dict>
<key>class-kwarg</key>
<dict>
<key>match</key>
<string>(?x)
\b ([[:alpha:]_]\w*) \s*(=)(?!=)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.python variable.parameter.class.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
</dict>
</dict>
</dict>
<key>inheritance-identifier</key>
<dict>
<key>match</key>
<string>(?x)
\b ([[:alpha:]_]\w*) \b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.python</string>
</dict>
</dict>
</dict>
<key>member-access-class</key>
<dict>
<key>begin</key>
<string>(\.)\s*(?!\.)</string>
<key>end</key>
<string>(?&lt;=\S)(?=\W)|$</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.period.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#call-wrapper-inheritance</string>
</dict>
<dict>
<key>include</key>
<string>#member-access-base</string>
</dict>
<dict>
<key>include</key>
<string>#inheritance-identifier</string>
</dict>
</array>
</dict>
<key>lambda</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>((?&lt;=\.)lambda|lambda(?=\s*[\.=]))</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.flow.python</string>
</dict>
</dict>
</dict>
<dict>
<key>match</key>
<string>\b(lambda)\s*?(?=[,\n]|$)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.lambda.python</string>
</dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>meta.lambda-function.python</string>
<key>begin</key>
<string>(?x)
\b (lambda) \b
</string>
<key>end</key>
<string>(:)|(\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.lambda.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.function.lambda.begin.python</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.function.lambda.parameters.python</string>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>keyword.operator.unpacking.parameter.python</string>
<key>match</key>
<string>(\*\*|\*)</string>
</dict>
<dict>
<key>include</key>
<string>#lambda-nested-incomplete</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>match</key>
<string>([[:alpha:]_]\w*)\s*(?:(,)|(?=:|$))</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>include</key>
<string>#backticks</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-anno</string>
</dict>
<dict>
<key>include</key>
<string>#lambda-parameter-with-default</string>
</dict>
<dict>
<key>include</key>
<string>#line-continuation</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-operator</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>lambda-incomplete</key>
<dict>
<key>name</key>
<string>storage.type.function.lambda.python</string>
<key>match</key>
<string>\blambda(?=\s*[,)])</string>
</dict>
<key>lambda-nested-incomplete</key>
<dict>
<key>name</key>
<string>storage.type.function.lambda.python</string>
<key>match</key>
<string>\blambda(?=\s*[:,)])</string>
</dict>
<key>lambda-parameter-with-default</key>
<dict>
<key>begin</key>
<string>(?x)
\b
([[:alpha:]_]\w*) \s* (=)
</string>
<key>end</key>
<string>(,)|(?=:|$)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>function-declaration</key>
<dict>
<key>name</key>
<string>meta.function.python</string>
<key>begin</key>
<string>(?x)
\s*
(?:\b(async) \s+)? \b(def)\s+
(?=
[[:alpha:]_][[:word:]]* \s* \(
)
</string>
<key>end</key>
<string>(:|(?=[#'"\n]))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.async.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.function.begin.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function-def-name</string>
</dict>
<dict>
<key>include</key>
<string>#parameters</string>
</dict>
<dict>
<key>include</key>
<string>#line-continuation</string>
</dict>
<dict>
<key>include</key>
<string>#return-annotation</string>
</dict>
</array>
</dict>
<key>function-def-name</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#illegal-object-name</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-possible-callables</string>
</dict>
<dict>
<key>name</key>
<string>entity.name.function.python</string>
<key>match</key>
<string>(?x)
\b ([[:alpha:]_]\w*) \b
</string>
</dict>
</array>
</dict>
<key>parameters</key>
<dict>
<key>name</key>
<string>meta.function.parameters.python</string>
<key>begin</key>
<string>(\()</string>
<key>end</key>
<string>(\))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>keyword.operator.unpacking.parameter.python</string>
<key>match</key>
<string>(\*\*|\*)</string>
</dict>
<dict>
<key>include</key>
<string>#lambda-incomplete</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-object-name</string>
</dict>
<dict>
<key>include</key>
<string>#parameter-special</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
([[:alpha:]_]\w*)
\s* (?: (,) | (?=[)#\n=]))
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>include</key>
<string>#loose-default</string>
</dict>
<dict>
<key>include</key>
<string>#annotated-parameter</string>
</dict>
</array>
</dict>
<key>parameter-special</key>
<dict>
<key>match</key>
<string>(?x)
\b ((self)|(cls)) \b \s*(?:(,)|(?=\)))
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.special.self.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.special.cls.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
</dict>
<key>loose-default</key>
<dict>
<key>begin</key>
<string>(=)</string>
<key>end</key>
<string>(,)|(?=\))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>annotated-parameter</key>
<dict>
<key>begin</key>
<string>(?x)
\b
([[:alpha:]_]\w*) \s* (:)
</string>
<key>end</key>
<string>(,)|(?=\))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.annotation.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
<key>match</key>
<string>=(?!=)</string>
</dict>
</array>
</dict>
<key>return-annotation</key>
<dict>
<key>begin</key>
<string>(-&gt;)</string>
<key>end</key>
<string>(?=:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.annotation.result.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>item-access</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>meta.item-access.python</string>
<key>begin</key>
<string>(?x)
\b(?=
[[:alpha:]_]\w* \s* \[
)
</string>
<key>end</key>
<string>(\])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#item-name</string>
</dict>
<dict>
<key>include</key>
<string>#item-index</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>item-name</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#special-variables</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-functions</string>
</dict>
<dict>
<key>include</key>
<string>#special-names</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\b ([[:alpha:]_]\w*) \b
</string>
</dict>
</array>
</dict>
<key>item-index</key>
<dict>
<key>begin</key>
<string>(\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.item-access.arguments.python</string>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>punctuation.separator.slice.python</string>
<key>match</key>
<string>:</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>decorator</key>
<dict>
<key>name</key>
<string>meta.function.decorator.python</string>
<key>begin</key>
<string>(?x)
^\s*
((@)) \s* (?=[[:alpha:]_]\w*)
</string>
<key>end</key>
<string>(?x)
( \) )
# trailing whitespace and comments are legal
(?: (.*?) (?=\s*(?:\#|$)) )
| (?=\n|\#)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.decorator.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.decorator.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.decorator.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#decorator-name</string>
</dict>
<dict>
<key>include</key>
<string>#function-arguments</string>
</dict>
</array>
</dict>
<key>decorator-name</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#builtin-callables</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-object-name</string>
</dict>
<dict>
<key>name</key>
<string>entity.name.function.decorator.python</string>
<key>match</key>
<string>(?x)
([[:alpha:]_]\w*) | (\.)
</string>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.period.python</string>
</dict>
</dict>
</dict>
<dict>
<key>include</key>
<string>#line-continuation</string>
</dict>
<dict>
<key>name</key>
<string>invalid.illegal.decorator.python</string>
<key>match</key>
<string>(?x)
\s* ([^([:alpha:]\s_\.#\\] .*?) (?=\#|$)
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.decorator.python</string>
</dict>
</dict>
</dict>
</array>
</dict>
<key>call-wrapper-inheritance</key>
<dict>
<key>comment</key>
<string>same as a function call, but in inheritance context</string>
<key>name</key>
<string>meta.function-call.python</string>
<key>begin</key>
<string>(?x)
\b(?=
([[:alpha:]_]\w*) \s* (\()
)
</string>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#inheritance-name</string>
</dict>
<dict>
<key>include</key>
<string>#function-arguments</string>
</dict>
</array>
</dict>
<key>inheritance-name</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#lambda-incomplete</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-possible-callables</string>
</dict>
<dict>
<key>include</key>
<string>#inheritance-identifier</string>
</dict>
</array>
</dict>
<key>function-call</key>
<dict>
<key>name</key>
<string>meta.function-call.python</string>
<key>begin</key>
<string>(?x)
\b(?=
([[:alpha:]_]\w*) \s* (\()
)
</string>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#special-variables</string>
</dict>
<dict>
<key>include</key>
<string>#function-name</string>
</dict>
<dict>
<key>include</key>
<string>#function-arguments</string>
</dict>
</array>
</dict>
<key>function-name</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#builtin-possible-callables</string>
</dict>
<dict>
<key>comment</key>
<string>Some color schemas support meta.function-call.generic scope</string>
<key>name</key>
<string>meta.function-call.generic.python</string>
<key>match</key>
<string>(?x)
\b ([[:alpha:]_]\w*) \b
</string>
</dict>
</array>
</dict>
<key>function-arguments</key>
<dict>
<key>begin</key>
<string>(\()</string>
<key>end</key>
<string>(?=\))(?!\)\s*\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.function-call.arguments.python</string>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>punctuation.separator.arguments.python</string>
<key>match</key>
<string>(,)</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
(?:(?&lt;=[,(])|^) \s* (\*{1,2})
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.unpacking.arguments.python</string>
</dict>
</dict>
</dict>
<dict>
<key>include</key>
<string>#lambda-incomplete</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>match</key>
<string>\b([[:alpha:]_]\w*)\s*(=)(?!=)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function-call.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
</dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
<key>match</key>
<string>=(?!=)</string>
</dict>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
<dict>
<key>match</key>
<string>\s*(\))\s*(\()</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
</dict>
</array>
</dict>
<key>builtin-callables</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#illegal-names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal-object-name</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-exceptions</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-functions</string>
</dict>
<dict>
<key>include</key>
<string>#builtin-types</string>
</dict>
</array>
</dict>
<key>builtin-possible-callables</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#builtin-callables</string>
</dict>
<dict>
<key>include</key>
<string>#magic-names</string>
</dict>
</array>
</dict>
<key>builtin-exceptions</key>
<dict>
<key>name</key>
<string>support.type.exception.python</string>
<key>match</key>
<string>(?x) (?&lt;!\.) \b(
(
Arithmetic | Assertion | Attribute | Buffer | BlockingIO
| BrokenPipe | ChildProcess
| (Connection (Aborted | Refused | Reset)?)
| EOF | Environment | FileExists | FileNotFound
| FloatingPoint | IO | Import | Indentation | Index | Interrupted
| IsADirectory | NotADirectory | Permission | ProcessLookup
| Timeout
| Key | Lookup | Memory | Name | NotImplemented | OS | Overflow
| Reference | Runtime | Recursion | Syntax | System
| Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)?
| Value | Windows | ZeroDivision | ModuleNotFound
) Error
|
((Pending)?Deprecation | Runtime | Syntax | User | Future | Import
| Unicode | Bytes | Resource
)? Warning
|
SystemExit | Stop(Async)?Iteration
| KeyboardInterrupt
| GeneratorExit | (Base)?Exception
)\b
</string>
</dict>
<key>builtin-functions</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>support.function.builtin.python</string>
<key>match</key>
<string>(?x)
(?&lt;!\.) \b(
__import__ | abs | all | any | ascii | bin | breakpoint | callable
| chr | compile | copyright | credits | delattr | dir | divmod
| enumerate | eval | exec | exit | filter | format | getattr
| globals | hasattr | hash | help | hex | id | input
| isinstance | issubclass | iter | len | license | locals | map
| max | memoryview | min | next | oct | open | ord | pow | print
| quit | range | reload | repr | reversed | round
| setattr | sorted | sum | vars | zip
)\b
</string>
</dict>
<dict>
<key>name</key>
<string>variable.legacy.builtin.python</string>
<key>match</key>
<string>(?x)
(?&lt;!\.) \b(
file | reduce | intern | raw_input | unicode | cmp | basestring
| execfile | long | xrange
)\b
</string>
</dict>
</array>
</dict>
<key>builtin-types</key>
<dict>
<key>name</key>
<string>support.type.python</string>
<key>match</key>
<string>(?x)
(?&lt;!\.) \b(
bool | bytearray | bytes | classmethod | complex | dict
| float | frozenset | int | list | object | property
| set | slice | staticmethod | str | tuple | type
(?# Although 'super' is not a type, it's related to types,
and is special enough to be highlighted differently from
other built-ins)
| super
)\b
</string>
</dict>
<key>magic-function-names</key>
<dict>
<key>comment</key>
<string>these methods have magic interpretation by python and are generally called
indirectly through syntactic constructs
</string>
<key>match</key>
<string>(?x)
\b(
__(?:
abs | add | aenter | aexit | aiter | and | anext | await
| bool | call | ceil | cmp | coerce | complex | contains
| copy | deepcopy | del | delattr | delete | delitem
| delslice | dir | div | divmod | enter | eq | exit | float
| floor | floordiv | format | ge | get | getattr
| getattribute | getinitargs | getitem | getnewargs
| getslice | getstate | gt | hash | hex | iadd | iand | idiv
| ifloordiv | ilshift | imod | imul | index | init
| instancecheck | int | invert | ior | ipow | irshift | isub
| iter | itruediv | ixor | le | len | long | lshift | lt
| missing | mod | mul | ne | neg | new | next | nonzero | oct | or
| pos | pow | radd | rand | rdiv | rdivmod | reduce
| reduce_ex | repr | reversed | rfloordiv | rlshift | rmod
| rmul | ror | round | rpow | rrshift | rshift | rsub
| rtruediv | rxor | set | setattr | setitem | setslice
| setstate | sizeof | str | sub | subclasscheck | truediv
| trunc | unicode | xor | matmul | rmatmul | imatmul
| init_subclass | set_name | fspath | bytes | prepare
)__
)\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.magic.python</string>
</dict>
</dict>
</dict>
<key>magic-variable-names</key>
<dict>
<key>comment</key>
<string>magic variables which a class/module may have.</string>
<key>match</key>
<string>(?x)
\b(
__(?:
all | bases | builtins | class | class_getitem | code | debug
| defaults | dict | doc | file | func | kwdefaults | members
| metaclass | methods | module | mro | mro_entries | name
| qualname | post_init | self | signature | slots | subclasses
| version | weakref | wrapped | annotations | classcell
| spec | path | package | future | traceback
)__
)\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.variable.magic.python</string>
</dict>
</dict>
</dict>
<key>magic-names</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#magic-function-names</string>
</dict>
<dict>
<key>include</key>
<string>#magic-variable-names</string>
</dict>
</array>
</dict>
<key>illegal-names</key>
<dict>
<key>match</key>
<string>(?x)
\b(?:
(
and | as | assert | async | await | break | class | continue | def
| del | elif | else | except | finally | for | from | global
| if | in | is | (?&lt;=\.)lambda | lambda(?=\s*[\.=])
| nonlocal | not | or | pass | raise | return | try | while | with
| yield
) | (
import
)
)\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.flow.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.import.python</string>
</dict>
</dict>
</dict>
<key>special-variables</key>
<dict>
<key>match</key>
<string>(?x)
\b (?&lt;!\.) (?:
(self) | (cls)
)\b
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.language.special.self.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.language.special.cls.python</string>
</dict>
</dict>
</dict>
<key>ellipsis</key>
<dict>
<key>name</key>
<string>constant.other.ellipsis.python</string>
<key>match</key>
<string>\.\.\.</string>
</dict>
<key>backticks</key>
<dict>
<key>name</key>
<string>invalid.deprecated.backtick.python</string>
<key>begin</key>
<string>\`</string>
<key>end</key>
<string>(?:\`|(?&lt;!\\)(\n))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<key>illegal-operator</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>invalid.illegal.operator.python</string>
<key>match</key>
<string>&amp;&amp;|\|\||--|\+\+</string>
</dict>
<dict>
<key>name</key>
<string>invalid.illegal.operator.python</string>
<key>match</key>
<string>[?$]</string>
</dict>
<dict>
<key>name</key>
<string>invalid.illegal.operator.python</string>
<key>comment</key>
<string>We don't want `!` to flash when we're typing `!=`</string>
<key>match</key>
<string>!\b</string>
</dict>
</array>
</dict>
<key>illegal-object-name</key>
<dict>
<key>comment</key>
<string>It's illegal to name class or function "True"</string>
<key>name</key>
<string>keyword.illegal.name.python</string>
<key>match</key>
<string>\b(True|False|None)\b</string>
</dict>
<key>illegal-anno</key>
<dict>
<key>name</key>
<string>invalid.illegal.annotation.python</string>
<key>match</key>
<string>-&gt;</string>
</dict>
<key>regexp-base-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-quantifier</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-base-common</string>
</dict>
</array>
</dict>
<key>fregexp-base-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fregexp-quantifier</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-formatting-braces</string>
</dict>
<dict>
<key>match</key>
<string>\{.*?\}</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-base-common</string>
</dict>
</array>
</dict>
<key>fstring-formatting-braces</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>empty braces are illegal</string>
<key>match</key>
<string>({)(\s*?)(})</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.brace.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
</dict>
<dict>
<key>name</key>
<string>constant.character.escape.python</string>
<key>match</key>
<string>({{|}})</string>
</dict>
</array>
</dict>
<key>regexp-base-common</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>support.other.match.any.regexp</string>
<key>match</key>
<string>\.</string>
</dict>
<dict>
<key>name</key>
<string>support.other.match.begin.regexp</string>
<key>match</key>
<string>\^</string>
</dict>
<dict>
<key>name</key>
<string>support.other.match.end.regexp</string>
<key>match</key>
<string>\$</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.quantifier.regexp</string>
<key>match</key>
<string>[+*?]\??</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.disjunction.regexp</string>
<key>match</key>
<string>\|</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-sequence</string>
</dict>
</array>
</dict>
<key>regexp-quantifier</key>
<dict>
<key>name</key>
<string>keyword.operator.quantifier.regexp</string>
<key>match</key>
<string>(?x)
\{(
\d+ | \d+,(\d+)? | ,\d+
)\}
</string>
</dict>
<key>fregexp-quantifier</key>
<dict>
<key>name</key>
<string>keyword.operator.quantifier.regexp</string>
<key>match</key>
<string>(?x)
\{\{(
\d+ | \d+,(\d+)? | ,\d+
)\}\}
</string>
</dict>
<key>regexp-backreference-number</key>
<dict>
<key>name</key>
<string>meta.backreference.regexp</string>
<key>match</key>
<string>(\\[1-9]\d?)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.tag.backreference.regexp</string>
</dict>
</dict>
</dict>
<key>regexp-backreference</key>
<dict>
<key>name</key>
<string>meta.backreference.named.regexp</string>
<key>match</key>
<string>(?x)
(\() (\?P= \w+(?:\s+[[:alnum:]]+)?) (\))
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.backreference.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp</string>
</dict>
</dict>
</dict>
<key>regexp-flags</key>
<dict>
<key>name</key>
<string>storage.modifier.flag.regexp</string>
<key>match</key>
<string>\(\?[aiLmsux]+\)</string>
</dict>
<key>regexp-escape-special</key>
<dict>
<key>name</key>
<string>support.other.escape.special.regexp</string>
<key>match</key>
<string>\\([AbBdDsSwWZ])</string>
</dict>
<key>regexp-escape-character</key>
<dict>
<key>name</key>
<string>constant.character.escape.regexp</string>
<key>match</key>
<string>(?x)
\\ (
x[0-9A-Fa-f]{2}
| 0[0-7]{1,2}
| [0-7]{3}
)
</string>
</dict>
<key>regexp-escape-unicode</key>
<dict>
<key>name</key>
<string>constant.character.unicode.regexp</string>
<key>match</key>
<string>(?x)
\\ (
u[0-9A-Fa-f]{4}
| U[0-9A-Fa-f]{8}
)
</string>
</dict>
<key>regexp-escape-catchall</key>
<dict>
<key>name</key>
<string>constant.character.escape.regexp</string>
<key>match</key>
<string>\\(.|\n)</string>
</dict>
<key>regexp-escape-sequence</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-escape-special</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-character</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference-number</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-catchall</string>
</dict>
</array>
</dict>
<key>regexp-charecter-set-escapes</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>constant.character.escape.regexp</string>
<key>match</key>
<string>\\[abfnrtv\\]</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-special</string>
</dict>
<dict>
<key>name</key>
<string>constant.character.escape.regexp</string>
<key>match</key>
<string>\\([0-7]{1,3})</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-character</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-escape-catchall</string>
</dict>
</array>
</dict>
<key>codetags</key>
<dict>
<key>match</key>
<string>(?:\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\b)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.codetag.notation.python</string>
</dict>
</dict>
</dict>
<key>comments-base</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.python</string>
<key>begin</key>
<string>(\#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.python</string>
</dict>
</dict>
<key>end</key>
<string>($)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>comments-string-single-three</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.python</string>
<key>begin</key>
<string>(\#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.python</string>
</dict>
</dict>
<key>end</key>
<string>($|(?='''))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>comments-string-double-three</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.python</string>
<key>begin</key>
<string>(\#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.python</string>
</dict>
</dict>
<key>end</key>
<string>($|(?="""))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>single-one-regexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-parentheses</string>
</dict>
</array>
</dict>
<key>single-one-regexp-character-set</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)
\[ \^? \] (?! .*?\])
</string>
</dict>
<dict>
<key>name</key>
<string>meta.character.set.regexp</string>
<key>begin</key>
<string>(\[)(\^)?(\])?</string>
<key>end</key>
<string>(\]|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.begin.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.negation.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.end.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-charecter-set-escapes</string>
</dict>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
<key>match</key>
<string>[^\n]</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>single-one-regexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-comments</key>
<dict>
<key>name</key>
<string>comment.regexp</string>
<key>begin</key>
<string>\(\?#</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.comment.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.comment.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>single-one-regexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-regexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-three-regexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-parentheses</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-character-set</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)
\[ \^? \] (?! .*?\])
</string>
</dict>
<dict>
<key>name</key>
<string>meta.character.set.regexp</string>
<key>begin</key>
<string>(\[)(\^)?(\])?</string>
<key>end</key>
<string>(\]|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.begin.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.negation.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.end.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-charecter-set-escapes</string>
</dict>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
<key>match</key>
<string>[^\n]</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>single-three-regexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-comments</key>
<dict>
<key>name</key>
<string>comment.regexp</string>
<key>begin</key>
<string>\(\?#</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.comment.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.comment.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>single-three-regexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-regexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>double-one-regexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-parentheses</string>
</dict>
</array>
</dict>
<key>double-one-regexp-character-set</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)
\[ \^? \] (?! .*?\])
</string>
</dict>
<dict>
<key>name</key>
<string>meta.character.set.regexp</string>
<key>begin</key>
<string>(\[)(\^)?(\])?</string>
<key>end</key>
<string>(\]|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.begin.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.negation.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.end.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-charecter-set-escapes</string>
</dict>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
<key>match</key>
<string>[^\n]</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>double-one-regexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-comments</key>
<dict>
<key>name</key>
<string>comment.regexp</string>
<key>begin</key>
<string>\(\?#</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.comment.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.comment.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>double-one-regexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-regexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>double-three-regexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-parentheses</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-character-set</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)
\[ \^? \] (?! .*?\])
</string>
</dict>
<dict>
<key>name</key>
<string>meta.character.set.regexp</string>
<key>begin</key>
<string>(\[)(\^)?(\])?</string>
<key>end</key>
<string>(\]|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.begin.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.negation.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.character.set.end.regexp constant.other.set.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp-charecter-set-escapes</string>
</dict>
<dict>
<key>name</key>
<string>constant.character.set.regexp</string>
<key>match</key>
<string>[^\n]</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>double-three-regexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-comments</key>
<dict>
<key>name</key>
<string>comment.regexp</string>
<key>begin</key>
<string>\(\?#</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.comment.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.comment.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#codetags</string>
</dict>
</array>
</dict>
<key>double-three-regexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-regexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>regexp-single-one-line</key>
<dict>
<key>name</key>
<string>string.regexp.quoted.single.python</string>
<key>begin</key>
<string>\b(([uU]r)|([bB]r)|(r[bB]?))(\')</string>
<key>end</key>
<string>(\')|(?&lt;!\\)(\n)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>regexp-single-three-line</key>
<dict>
<key>name</key>
<string>string.regexp.quoted.multi.python</string>
<key>begin</key>
<string>\b(([uU]r)|([bB]r)|(r[bB]?))(\'\'\')</string>
<key>end</key>
<string>(\'\'\')</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-regexp-expression</string>
</dict>
</array>
</dict>
<key>regexp-double-one-line</key>
<dict>
<key>name</key>
<string>string.regexp.quoted.single.python</string>
<key>begin</key>
<string>\b(([uU]r)|([bB]r)|(r[bB]?))(")</string>
<key>end</key>
<string>(")|(?&lt;!\\)(\n)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-regexp-expression</string>
</dict>
</array>
</dict>
<key>regexp-double-three-line</key>
<dict>
<key>name</key>
<string>string.regexp.quoted.multi.python</string>
<key>begin</key>
<string>\b(([uU]r)|([bB]r)|(r[bB]?))(""")</string>
<key>end</key>
<string>(""")</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-regexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fregexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#single-one-fregexp-parentheses</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-one-fregexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?=\'))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fregexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#single-three-fregexp-parentheses</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>single-three-fregexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?=\'\'\'))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-single-three</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fregexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#double-one-fregexp-parentheses</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-one-fregexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?="))|((?=(?&lt;!\\)\n))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fregexp-base-expression</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-character-set</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-comments</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-flags</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-regexp-named-group</string>
</dict>
<dict>
<key>include</key>
<string>#regexp-backreference</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-lookahead</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-lookahead-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-lookbehind</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-lookbehind-negative</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-conditional</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-parentheses-non-capturing</string>
</dict>
<dict>
<key>include</key>
<string>#double-three-fregexp-parentheses</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-named-group</key>
<dict>
<key>name</key>
<string>meta.named.regexp</string>
<key>begin</key>
<string>(?x)
(\() (\?P &lt;\w+(?:\s+[[:alnum:]]+)?&gt;)
</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.named.group.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-lookahead</key>
<dict>
<key>begin</key>
<string>(\()\?=</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-lookahead-negative</key>
<dict>
<key>begin</key>
<string>(\()\?!</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookahead.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-lookbehind</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;=</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-lookbehind-negative</key>
<dict>
<key>begin</key>
<string>(\()\?&lt;!</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.lookbehind.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-conditional</key>
<dict>
<key>begin</key>
<string>(\()\?\((\w+(?:\s+[[:alnum:]]+)?|\d+)\)</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.regexp</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.parenthesis.conditional.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-parentheses-non-capturing</key>
<dict>
<key>begin</key>
<string>\(\?:</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>double-three-fregexp-parentheses</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>(\)|(?="""))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.parenthesis.regexp punctuation.parenthesis.end.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
<dict>
<key>include</key>
<string>#comments-string-double-three</string>
</dict>
</array>
</dict>
<key>fregexp-single-one-line</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.regexp.quoted.single.python</string>
<key>begin</key>
<string>\b(([uU]r)|([fF]r)|(r[fF]?))(\')</string>
<key>end</key>
<string>(\')|(?&lt;!\\)(\n)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>fregexp-single-three-line</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.regexp.quoted.multi.python</string>
<key>begin</key>
<string>\b(([uU]r)|([fF]r)|(r[fF]?))(\'\'\')</string>
<key>end</key>
<string>(\'\'\')</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single-three-fregexp-expression</string>
</dict>
</array>
</dict>
<key>fregexp-double-one-line</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.regexp.quoted.single.python</string>
<key>begin</key>
<string>\b(([uU]r)|([fF]r)|(r[fF]?))(")</string>
<key>end</key>
<string>(")|(?&lt;!\\)(\n)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-one-fregexp-expression</string>
</dict>
</array>
</dict>
<key>fregexp-double-three-line</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.regexp.quoted.multi.python</string>
<key>begin</key>
<string>\b(([uU]r)|([fF]r)|(r[fF]?))(""")</string>
<key>end</key>
<string>(""")</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double-three-fregexp-expression</string>
</dict>
</array>
</dict>
<key>string-raw-quoted-single-line</key>
<dict>
<key>name</key>
<string>string.quoted.raw.single.python</string>
<key>begin</key>
<string>\b(([uU]R)|(R))((['"]))</string>
<key>end</key>
<string>(\4)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-single-bad-brace1-formatting-raw</string>
</dict>
<dict>
<key>include</key>
<string>#string-single-bad-brace2-formatting-raw</string>
</dict>
<dict>
<key>include</key>
<string>#string-raw-guts</string>
</dict>
</array>
</dict>
<key>string-bin-quoted-single-line</key>
<dict>
<key>name</key>
<string>string.quoted.binary.single.python</string>
<key>begin</key>
<string>(\b[bB])((['"]))</string>
<key>end</key>
<string>(\2)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-entity</string>
</dict>
</array>
</dict>
<key>string-raw-bin-quoted-single-line</key>
<dict>
<key>name</key>
<string>string.quoted.raw.binary.single.python</string>
<key>begin</key>
<string>(\b(?:R[bB]|[bB]R))((['"]))</string>
<key>end</key>
<string>(\2)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-raw-bin-guts</string>
</dict>
</array>
</dict>
<key>string-quoted-single-line</key>
<dict>
<key>name</key>
<string>string.quoted.single.python</string>
<key>begin</key>
<string>(?:\b([rR])(?=[uU]))?([uU])?((['"]))</string>
<key>end</key>
<string>(\3)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.prefix.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-single-bad-brace1-formatting-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-single-bad-brace2-formatting-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-unicode-guts</string>
</dict>
</array>
</dict>
<key>string-single-bad-brace1-formatting-unicode</key>
<dict>
<key>comment</key>
<string>template using {% ... %}</string>
<key>begin</key>
<string>(?x)
(?= \{%
( .*? (?!(['"])|((?&lt;!\\)\n)) )
%\}
)
</string>
<key>end</key>
<string>(?=(['"])|((?&lt;!\\)\n))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#escape-sequence</string>
</dict>
<dict>
<key>include</key>
<string>#string-line-continuation</string>
</dict>
</array>
</dict>
<key>string-single-bad-brace1-formatting-raw</key>
<dict>
<key>comment</key>
<string>template using {% ... %}</string>
<key>begin</key>
<string>(?x)
(?= \{%
( .*? (?!(['"])|((?&lt;!\\)\n)) )
%\}
)
</string>
<key>end</key>
<string>(?=(['"])|((?&lt;!\\)\n))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
</array>
</dict>
<key>string-single-bad-brace2-formatting-unicode</key>
<dict>
<key>comment</key>
<string>odd format or format-like syntax</string>
<key>begin</key>
<string>(?x)
(?!\{\{)
(?= \{ (
\w*? (?!(['"])|((?&lt;!\\)\n)) [^!:\.\[}\w]
)
.*?(?!(['"])|((?&lt;!\\)\n))
\}
)
</string>
<key>end</key>
<string>(?=(['"])|((?&lt;!\\)\n))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-entity</string>
</dict>
</array>
</dict>
<key>string-single-bad-brace2-formatting-raw</key>
<dict>
<key>comment</key>
<string>odd format or format-like syntax</string>
<key>begin</key>
<string>(?x)
(?!\{\{)
(?= \{ (
\w*? (?!(['"])|((?&lt;!\\)\n)) [^!:\.\[}\w]
)
.*?(?!(['"])|((?&lt;!\\)\n))
\}
)
</string>
<key>end</key>
<string>(?=(['"])|((?&lt;!\\)\n))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#string-formatting</string>
</dict>
</array>
</dict>
<key>string-raw-quoted-multi-line</key>
<dict>
<key>name</key>
<string>string.quoted.raw.multi.python</string>
<key>begin</key>
<string>\b(([uU]R)|(R))('''|""")</string>
<key>end</key>
<string>(\4)</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.deprecated.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-multi-bad-brace1-formatting-raw</string>
</dict>
<dict>
<key>include</key>
<string>#string-multi-bad-brace2-formatting-raw</string>
</dict>
<dict>
<key>include</key>
<string>#string-raw-guts</string>
</dict>
</array>
</dict>
<key>string-bin-quoted-multi-line</key>
<dict>
<key>name</key>
<string>string.quoted.binary.multi.python</string>
<key>begin</key>
<string>(\b[bB])('''|""")</string>
<key>end</key>
<string>(\2)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-entity</string>
</dict>
</array>
</dict>
<key>string-raw-bin-quoted-multi-line</key>
<dict>
<key>name</key>
<string>string.quoted.raw.binary.multi.python</string>
<key>begin</key>
<string>(\b(?:R[bB]|[bB]R))('''|""")</string>
<key>end</key>
<string>(\2)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-raw-bin-guts</string>
</dict>
</array>
</dict>
<key>string-quoted-multi-line</key>
<dict>
<key>name</key>
<string>string.quoted.multi.python</string>
<key>begin</key>
<string>(?:\b([rR])(?=[uU]))?([uU])?('''|""")</string>
<key>end</key>
<string>(\3)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.prefix.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-multi-bad-brace1-formatting-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-multi-bad-brace2-formatting-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-unicode-guts</string>
</dict>
</array>
</dict>
<key>string-multi-bad-brace1-formatting-unicode</key>
<dict>
<key>comment</key>
<string>template using {% ... %}</string>
<key>begin</key>
<string>(?x)
(?= \{%
( .*? (?!'''|""") )
%\}
)
</string>
<key>end</key>
<string>(?='''|""")</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#escape-sequence</string>
</dict>
<dict>
<key>include</key>
<string>#string-line-continuation</string>
</dict>
</array>
</dict>
<key>string-multi-bad-brace1-formatting-raw</key>
<dict>
<key>comment</key>
<string>template using {% ... %}</string>
<key>begin</key>
<string>(?x)
(?= \{%
( .*? (?!'''|""") )
%\}
)
</string>
<key>end</key>
<string>(?='''|""")</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
</array>
</dict>
<key>string-multi-bad-brace2-formatting-unicode</key>
<dict>
<key>comment</key>
<string>odd format or format-like syntax</string>
<key>begin</key>
<string>(?x)
(?!\{\{)
(?= \{ (
\w*? (?!'''|""") [^!:\.\[}\w]
)
.*?(?!'''|""")
\}
)
</string>
<key>end</key>
<string>(?='''|""")</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escape-sequence-unicode</string>
</dict>
<dict>
<key>include</key>
<string>#string-entity</string>
</dict>
</array>
</dict>
<key>string-multi-bad-brace2-formatting-raw</key>
<dict>
<key>comment</key>
<string>odd format or format-like syntax</string>
<key>begin</key>
<string>(?x)
(?!\{\{)
(?= \{ (
\w*? (?!'''|""") [^!:\.\[}\w]
)
.*?(?!'''|""")
\}
)
</string>
<key>end</key>
<string>(?='''|""")</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-consume-escape</string>
</dict>
<dict>
<key>include</key>
<string>#string-formatting</string>
</dict>
</array>
</dict>
<key>fstring-fnorm-quoted-single-line</key>
<dict>
<key>name</key>
<string>meta.fstring.python</string>
<key>begin</key>
<string>(\b[fF])([bBuU])?((['"]))</string>
<key>end</key>
<string>(\3)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.single.python storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-guts</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-illegal-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-single-core</string>
</dict>
</array>
</dict>
<key>fstring-normf-quoted-single-line</key>
<dict>
<key>name</key>
<string>meta.fstring.python</string>
<key>begin</key>
<string>(\b[bBuU])([fF])((['"]))</string>
<key>end</key>
<string>(\3)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.prefix.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.single.python storage.type.string.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python string.quoted.single.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-guts</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-illegal-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-single-core</string>
</dict>
</array>
</dict>
<key>fstring-raw-quoted-single-line</key>
<dict>
<key>name</key>
<string>meta.fstring.python</string>
<key>begin</key>
<string>(\b(?:[R][fF]|[fF][R]))((['"]))</string>
<key>end</key>
<string>(\2)|((?&lt;!\\)\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.raw.single.python storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python string.quoted.raw.single.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-raw-guts</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-illegal-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-raw-single-core</string>
</dict>
</array>
</dict>
<key>fstring-single-core</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.single.python</string>
<key>match</key>
<string>(?x)
(.+?)
(
(?# .* and .*? in multi-line match need special handling of
newlines otherwise SublimeText and Atom will match slightly
differently.
The guard for newlines has to be separate from the
lookahead because of special $ matching rule.)
($\n?)
|
(?=[\\\}\{]|(['"])|((?&lt;!\\)\n))
)
(?# due to how multiline regexps are matched we need a special case
for matching a newline character)
| \n
</string>
</dict>
<key>fstring-raw-single-core</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.raw.single.python</string>
<key>match</key>
<string>(?x)
(.+?)
(
(?# .* and .*? in multi-line match need special handling of
newlines otherwise SublimeText and Atom will match slightly
differently.
The guard for newlines has to be separate from the
lookahead because of special $ matching rule.)
($\n?)
|
(?=[\\\}\{]|(['"])|((?&lt;!\\)\n))
)
(?# due to how multiline regexps are matched we need a special case
for matching a newline character)
| \n
</string>
</dict>
<key>fstring-single-brace</key>
<dict>
<key>comment</key>
<string>value interpolation using { ... }</string>
<key>begin</key>
<string>(\{)</string>
<key>end</key>
<string>(?x)
(\})|(?=\n)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-terminator-single</string>
</dict>
<dict>
<key>include</key>
<string>#f-expression</string>
</dict>
</array>
</dict>
<key>fstring-terminator-single</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(![rsa])(?=})</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
(![rsa])?
( : \w? [&lt;&gt;=^]? [-+ ]? \#?
\d* ,? (\.\d+)? [bcdeEfFgGnosxX%]? )(?=})
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
</dict>
</dict>
<dict>
<key>include</key>
<string>#fstring-terminator-single-tail</string>
</dict>
</array>
</dict>
<key>fstring-terminator-single-tail</key>
<dict>
<key>begin</key>
<string>(![rsa])?(:)(?=.*?{)</string>
<key>end</key>
<string>(?=})|(?=\n)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-illegal-single-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-single-brace</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>([bcdeEfFgGnosxX%])(?=})</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\.\d+)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(,)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\d+)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\#)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>([-+ ])</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>([&lt;&gt;=^])</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\w)</string>
</dict>
</array>
</dict>
<key>fstring-fnorm-quoted-multi-line</key>
<dict>
<key>name</key>
<string>meta.fstring.python</string>
<key>begin</key>
<string>(\b[fF])([bBuU])?('''|""")</string>
<key>end</key>
<string>(\3)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.multi.python storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.prefix.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-guts</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-illegal-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-multi-core</string>
</dict>
</array>
</dict>
<key>fstring-normf-quoted-multi-line</key>
<dict>
<key>name</key>
<string>meta.fstring.python</string>
<key>begin</key>
<string>(\b[bBuU])([fF])('''|""")</string>
<key>end</key>
<string>(\3)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>invalid.illegal.prefix.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.multi.python storage.type.string.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python string.quoted.multi.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-guts</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-illegal-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-multi-core</string>
</dict>
</array>
</dict>
<key>fstring-raw-quoted-multi-line</key>
<dict>
<key>name</key>
<string>meta.fstring.python</string>
<key>begin</key>
<string>(\b(?:[R][fF]|[fF][R]))('''|""")</string>
<key>end</key>
<string>(\2)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.raw.multi.python storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python string.quoted.raw.multi.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.newline.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-raw-guts</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-illegal-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-raw-multi-core</string>
</dict>
</array>
</dict>
<key>fstring-multi-core</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.multi.python</string>
<key>match</key>
<string>(?x)
(.+?)
(
(?# .* and .*? in multi-line match need special handling of
newlines otherwise SublimeText and Atom will match slightly
differently.
The guard for newlines has to be separate from the
lookahead because of special $ matching rule.)
($\n?)
|
(?=[\\\}\{]|'''|""")
)
(?# due to how multiline regexps are matched we need a special case
for matching a newline character)
| \n
</string>
</dict>
<key>fstring-raw-multi-core</key>
<dict>
<key>name</key>
<string>string.interpolated.python string.quoted.raw.multi.python</string>
<key>match</key>
<string>(?x)
(.+?)
(
(?# .* and .*? in multi-line match need special handling of
newlines otherwise SublimeText and Atom will match slightly
differently.
The guard for newlines has to be separate from the
lookahead because of special $ matching rule.)
($\n?)
|
(?=[\\\}\{]|'''|""")
)
(?# due to how multiline regexps are matched we need a special case
for matching a newline character)
| \n
</string>
</dict>
<key>fstring-multi-brace</key>
<dict>
<key>comment</key>
<string>value interpolation using { ... }</string>
<key>begin</key>
<string>(\{)</string>
<key>end</key>
<string>(?x)
(\})
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.format.placeholder.other.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-terminator-multi</string>
</dict>
<dict>
<key>include</key>
<string>#f-expression</string>
</dict>
</array>
</dict>
<key>fstring-terminator-multi</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(![rsa])(?=})</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
(![rsa])?
( : \w? [&lt;&gt;=^]? [-+ ]? \#?
\d* ,? (\.\d+)? [bcdeEfFgGnosxX%]? )(?=})
</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
</dict>
</dict>
<dict>
<key>include</key>
<string>#fstring-terminator-multi-tail</string>
</dict>
</array>
</dict>
<key>fstring-terminator-multi-tail</key>
<dict>
<key>begin</key>
<string>(![rsa])?(:)(?=.*?{)</string>
<key>end</key>
<string>(?=})</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#fstring-illegal-multi-brace</string>
</dict>
<dict>
<key>include</key>
<string>#fstring-multi-brace</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>([bcdeEfFgGnosxX%])(?=})</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\.\d+)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(,)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\d+)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\#)</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>([-+ ])</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>([&lt;&gt;=^])</string>
</dict>
<dict>
<key>name</key>
<string>storage.type.format.python</string>
<key>match</key>
<string>(\w)</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>