--- 
name: Regular Expressions (Oniguruma)
fileTypes: 
- re
scopeName: source.regexp.oniguruma
repository: 
  character-class: 
    patterns: 
    - name: constant.character.character-class.regexp
      match: \\[wWsSdDhH]|\.
    - name: constant.character.escape.backslash.regexp
      match: \\.
    - name: constant.other.character-class.set.regexp
      endCaptures: 
        "1": 
          name: punctuation.definition.character-class.regexp
      begin: (\[)(\^)?
      beginCaptures: 
        "1": 
          name: punctuation.definition.character-class.regexp
        "2": 
          name: keyword.operator.negation.regexp
      end: (\])
      patterns: 
      - include: "#character-class"
      - name: constant.other.character-class.range.regexp
        captures: 
          "2": 
            name: constant.character.escape.backslash.regexp
          "4": 
            name: constant.character.escape.backslash.regexp
        match: (.|(\\.))\-([^\]]|(\\.))
      - name: keyword.operator.intersection.regexp
        match: "&&"
uuid: D609BF3F-BEDB-41AE-BA6F-903CC77A7BB3
foldingStartMarker: (/\*|\{|\()
patterns: 
- name: keyword.control.anchor.regexp
  match: \\[bBAZzG]|\^|\$
- name: constant.character.numeric.regexp
  match: \\([0-7]{3}|\\x(\h\h|\{\h{,8}\}))
- name: keyword.other.back-reference.regexp
  match: \\[1-9]\d*
- name: keyword.other.back-reference.named.regexp
  captures: 
    "1": 
      name: keyword.other.back-reference.named.regexp
    "2": 
      name: entity.name.section.back-reference
    "3": 
      name: keyword.other.back-reference.named.regexp
  match: (\\k\<)([a-z]\w*)(\>)
- name: constant.other.character-class.posix.regexp
  match: \[\:(\^)?(alnum|alpha|ascii|blank|cntrl|x?digit|graph|lower|print|punct|space|upper)\]
- name: keyword.operator.quantifier.regexp
  match: "[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
- name: keyword.operator.or.regexp
  match: \|
- name: comment.block.regexp
  begin: \(\?\#
  end: \)
- name: comment.line.number-sign.regexp
  match: (?<=^|\s)#\s[[a-zA-Z0-9,. \t?!-:][^\x00-\x7F]]*$
  comment: We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.
- name: keyword.other.option-toggle.regexp
  match: \(\?[imx-]+\)
- name: meta.group.assertion.regexp
  endCaptures: 
    "1": 
      name: punctuation.definition.group.regexp
  begin: (\()((\?=)|(\?!)|(\?<=)|(\?<!))
  beginCaptures: 
    "6": 
      name: meta.assertion.negative-look-behind.regexp
    "1": 
      name: punctuation.definition.group.regexp
    "3": 
      name: meta.assertion.look-ahead.regexp
    "4": 
      name: meta.assertion.negative-look-ahead.regexp
    "5": 
      name: meta.assertion.look-behind.regexp
  end: (\))
  patterns: 
  - include: $self
- name: meta.group.regexp
  endCaptures: 
    "1": 
      name: punctuation.definition.group.regexp
  begin: (\()((\?(>|[imx-]*:))|(\?<)([a-z]\w*)(>))?
  beginCaptures: 
    "6": 
      name: entity.name.section.group.regexp
    "7": 
      name: keyword.other.group-options.regexp
    "1": 
      name: punctuation.definition.group.regexp
    "3": 
      name: keyword.other.group-options.regexp
    "5": 
      name: keyword.other.group-options.regexp
  end: (\))
  patterns: 
  - include: $self
- include: "#character-class"
foldingStopMarker: (\*/|\}|\))
comment: Matches Oniguruma's Ruby regexp syntax (TextMate uses Oniguruma in Ruby mode).
