description = '''
lookahead, lookbehind, combined lookaround, and negative lookaround tests.
matches = [[start, end]] in utf8 bytes
'''
[[test]]
name = "neg_lookbehind_b"
pattern = "(?<!a)"
input = "b"
matches = [[0, 0], [1, 1]]
[[test]]
name = "lookahead_conditional_digit"
pattern = '1(?=[012])\d'
input = "11"
matches = [[0, 2]]
[[test]]
name = "lookbehind_a_wb_b"
pattern = '(?<=a.*)\bb'
input = "a b"
matches = [[3, 4]]
[[test]]
name = "lookahead_greedy"
pattern = ".*(?=aaa)"
input = "baaa"
matches = [[0, 1], [1, 1]]
[[test]]
name = "lookahead_zero_width"
pattern = "(?=a)"
input = "a"
matches = [[0, 0]]
[[test]]
name = "lookahead_a_then_a"
pattern = "a(?=a)"
input = "aa"
matches = [[0, 1]]
[[test]]
name = "lookahead_a_then_b"
pattern = "a(?=b)"
input = "_ab_ab_"
matches = [[1, 2], [4, 5]]
[[test]]
name = "lookahead_bb_aa"
pattern = "bb(?=aa)"
input = "__bbaa__"
matches = [[2, 4]]
[[test]]
name = "lookahead_bb_a"
pattern = "bb(?=a)"
input = "__bbaaa__"
matches = [[2, 4]]
[[test]]
name = "lookahead_bb_aaa"
pattern = "bb(?=aaa)"
input = "__bbaaa__"
matches = [[2, 4]]
[[test]]
name = "lookahead_bb_aaaa"
pattern = "bb(?=aaaa)"
input = "__bbaaaa__"
matches = [[2, 4]]
[[test]]
name = "lookahead_bb_aaaaa"
pattern = "bb(?=aaaaa)"
input = "__bbaaaaa__"
matches = [[2, 4]]
[[test]]
name = "lookahead_word_springer"
pattern = '\w+(?=.*Springer)'
input = "publisher={Springer}"
matches = [[0, 9]]
[[test]]
name = "lookahead_word_springer_wildcard"
pattern = '\w+(?=_*Springer)'
input = "publisher={Springer}"
matches = [[0, 9]]
[[test]]
name = "lookahead_dot_c"
pattern = ".(?=.*c)"
input = "bc"
matches = [[0, 1]]
[[test]]
name = "lookahead_a_b_underscore"
pattern = "a(?=b_)"
input = "_ab_ab_"
matches = [[1, 2], [4, 5]]
[[test]]
name = "lookahead_dotstar_b_underscore"
pattern = ".*(?=b_)"
input = "_ab_ab_"
matches = [[0, 5], [5, 5]]
[[test]]
name = "lookahead_group_plus_underscore"
pattern = "(ab)+(?=_)"
input = "_ab_ab_"
matches = [[1, 3], [4, 6]]
[[test]]
name = "lookahead_multiple_bbb_ccc"
pattern = ".*(?=.*bbb)(?=.*ccc)"
input = "aaa bbb ccc"
matches = [[0, 4], [4, 4]]
[[test]]
name = "lookahead_multiple_13_2"
pattern = "1(?=.*3)(?=.*2)"
input = " 1 23"
matches = [[1, 2]]
[[test]]
name = "lookahead_a_plus_wb_underscores"
pattern = 'a+(?=\W)(?=.*___)'
input = "aaa ___"
matches = [[0, 3]]
[[test]]
name = "lookahead_dotstar_wb_underscores"
pattern = '.*(?=\W)(?=.*___)'
input = "aaa ___"
matches = [[0, 3], [3, 3]]
[[test]]
name = "lookahead_time_am"
pattern = '\d+(?=[aA]\.?[mM]\.?)'
input = "10am"
matches = [[0, 2]]
[[test]]
name = "lookahead_time_pm"
pattern = '\d+(?=[aApP]\.?[mM]\.?)'
input = "10pm"
matches = [[0, 2]]
[[test]]
name = "lookahead_time_space_pm"
pattern = '\d+(?=\s*[aApP]\.?[mM]\.?)'
input = "10 pm"
matches = [[0, 2]]
[[test]]
name = "lookahead_time_many_spaces_pm"
pattern = '\d+(?=\s*[aApP]\.?[mM]\.?)'
input = "10 pm"
matches = [[0, 2]]
[[test]]
name = "lookahead_end_anchor"
pattern = 'a_*(?=\z)'
input = "aaa"
matches = [[0, 3]]
[[test]]
name = "lookahead_end_anchor_wildcard"
pattern = 'a_*(?=_*\z)'
input = "aaa"
matches = [[0, 3]]
[[test]]
name = "lookbehind_zero_width_b"
pattern = "(?<=b)"
input = "b"
matches = [[1, 1]]
[[test]]
name = "lookbehind_zero_width_bb"
pattern = "(?<=bb)"
input = "bb"
matches = [[2, 2]]
[[test]]
name = "lookbehind_zero_width_bbb"
pattern = "(?<=bbb)"
input = "bbb"
matches = [[3, 3]]
[[test]]
name = "lookbehind_b_then_b"
pattern = "(?<=b)b"
input = "bb"
matches = [[1, 2]]
[[test]]
name = "lookbehind_bb_then_b"
pattern = "(?<=bb)b"
input = "bbb"
matches = [[2, 3]]
[[test]]
name = "lookbehind_b_then_a"
pattern = "(?<=b)a"
input = "ba"
matches = [[1, 2]]
[[test]]
name = "lookbehind_b_then_a_bba"
pattern = "(?<=b)a"
input = "bba"
matches = [[2, 3]]
[[test]]
name = "lookbehind_b_then_a_bbbba"
pattern = "(?<=b)a"
input = "bbbba"
matches = [[4, 5]]
[[test]]
name = "lookbehind_bb_then_a"
pattern = "(?<=bb)a"
input = "bbbba"
matches = [[4, 5]]
[[test]]
name = "lookbehind_bbb_then_a"
pattern = "(?<=bbb)a"
input = "bbbba"
matches = [[4, 5]]
[[test]]
name = "lookbehind_aaa_dotstar"
pattern = "(?<=aaa).*"
input = "aaabbb"
matches = [[3, 6]]
[[test]]
name = "lookbehind_author"
pattern = "(?<=author).*"
input = "author: abc and def"
matches = [[6, 19]]
[[test]]
name = "lookbehind_braces"
pattern = '(?<=aaa\{).*(?=\})'
input = "aaa{bbb {ccc}}"
matches = [[4, 13]]
[[test]]
name = "lookbehind_stacked_w_a"
pattern = '(?<=\w)(?<=a)b'
input = "ab"
matches = [[1, 2]]
[[test]]
name = "lookbehind_stacked_ww_aa"
pattern = '(?<=\w\w)(?<=aa)b'
input = "aab"
matches = [[2, 3]]
[[test]]
name = "lookbehind_stacked_ww_aa_bb"
pattern = '(?<=\w\w)(?<=aa)bb'
input = "aabb"
matches = [[2, 4]]
[[test]]
name = "lookbehind_stacked_w_aa"
pattern = '(?<=\w)(?<=aa)b'
input = "aab"
matches = [[2, 3]]
[[test]]
name = "lookbehind_lookahead_dot_c"
pattern = "(?<=a.*).(?=.*c)"
input = "abc"
matches = [[1, 2]]
[[test]]
name = "lookbehind_lookahead_dot_c_underscores"
pattern = "(?<=a.*).(?=.*c)"
input = "a__c"
matches = [[1, 2], [2, 3]]
[[test]]
name = "lookbehind_lookahead_x"
pattern = "(?<=a.*)(x)(?=.*c)"
input = "a x c"
matches = [[2, 3]]
[[test]]
name = "lookbehind_lookahead_wb_x"
pattern = '(?<=a.*)(\bx)(?=.*c)'
input = "a x c"
matches = [[2, 3]]
[[test]]
name = "lookbehind_lookahead_wb_x_wb"
pattern = '(?<=a.*)(\bx\b)(?=.*c)'
input = "a x c"
matches = [[2, 3]]
[[test]]
name = "lookbehind_lookahead_wb_xx_no_match"
pattern = '(?<=a.*)(\bx\b)(?=.*c)'
input = "a xx c"
matches = []
[[test]]
name = "lookbehind_lookahead_hello"
pattern = '(?<=\W)hello(?=\W)'
input = " hello "
matches = [[1, 6]]
[[test]]
name = "lookbehind_lookahead_helloworld_no_match"
pattern = '(?<=\W)hello(?=\W)'
input = " helloworld "
matches = []
[[test]]
name = "lookbehind_bounded_ab"
pattern = "(?<=c.*)(ab){1,3}"
input = "c_ababab"
matches = [[2, 8]]
[[test]]
name = "lookahead_bounded_ab_c"
pattern = "(ab){1,3}(?=.*c)"
input = "__ababab_c"
matches = [[2, 8]]
[[test]]
name = "lookahead_complex_multi"
pattern = "a.+(?=.*f)(?=.*e)(?=c)"
input = "abcdef"
matches = [[0, 2]]
[[test]]
name = "lookbehind_complex_multi"
pattern = "(?<=f)(?<=e.*)(?<=c.*).+"
input = "abcdefghij"
matches = [[6, 10]]
[[test]]
name = "neg_lookahead"
pattern = "(?!a)"
input = "b"
matches = [[0, 0], [1, 1]]
[[test]]
name = "neg_lookbehind_digit_a"
pattern = '(?<!\d)a'
input = " a"
matches = [[1, 2]]
[[test]]
name = "neg_lookbehind_b_c"
pattern = "(?<!b)c"
input = " c"
matches = [[1, 2]]
[[test]]
name = "pos_lookbehind_digit_a"
pattern = '(?<=\d)a'
input = "1a__a__a"
matches = [[1, 2]]
[[test]]
name = "neg_lookbehind_digit_a_multi"
pattern = '(?<!\d)a'
input = "1a__a__a"
matches = [[4, 5], [7, 8]]
[[test]]
name = "neg_lookbehind_digit_a_space"
pattern = '(?<!\d)a'
input = " a"
matches = [[1, 2]]
[[test]]
name = "lookahead_wb_dash"
pattern = 'a+\b(?=.*---)'
input = "aaa ---"
matches = [[0, 3]]
[[test]]
name = "lookahead_wb_1_2"
pattern = '1\b(?=.*2)'
input = " 1 2"
matches = [[1, 2]]
[[test]]
name = "lookahead_wb_x_c"
pattern = 'x\b(?=.*c)'
input = "a x c"
matches = [[2, 3]]
[[test]]
name = "union_lookahead_ab_cd_ef_gh"
pattern = 'ab(?=cd)|ef(?=gh)'
input = "abcd"
matches = [[0, 2]]
[[test]]
name = "union_lookahead_ab_cd_ef_gh_second"
pattern = 'ab(?=cd)|ef(?=gh)'
input = "efgh"
matches = [[0, 2]]
[[test]]
name = "union_lookahead_ab_cd_ef_gh_both"
pattern = 'ab(?=cd)|ef(?=gh)'
input = "abcd efgh"
matches = [[0, 2], [5, 7]]
[[test]]
name = "readme_lookahead_single_word"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " Hello "
matches = [[1, 6]]
[[test]]
name = "readme_lookahead_multiple_words"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " Hello World Foo "
matches = [[1, 6], [7, 12], [13, 16]]
[[test]]
name = "readme_lookahead_no_trailing_space"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " Hello"
matches = []
[[test]]
name = "readme_lookahead_no_leading_space"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = "Hello "
matches = []
[[test]]
name = "readme_lookahead_adjacent_caps"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " AB "
matches = []
[[test]]
name = "readme_lookahead_single_lower"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " A "
matches = []
[[test]]
name = "readme_lookahead_tab_delimited"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = "\tHello\tWorld\t"
matches = [[1, 6], [7, 12]]
[[test]]
name = "readme_lookahead_mixed_spacing"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = " Cat Dog "
matches = [[1, 4], [6, 9]]
[[test]]
name = "readme_lookahead_surrounded_by_words"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = "foo Bar baz"
matches = [[4, 7]]
[[test]]
name = "readme_lookahead_newline_delimited"
pattern = '(?<=\s)[A-Z][a-z]+(?=\s)'
input = "\nHello\n"
matches = [[1, 6]]
[[test]]
name = "lookahead_der_long_body"
pattern = '[A-Z][a-z]{5,}(?=\s)'
input = "Abcdef Xy "
matches = [[0, 6]]
[[test]]
name = "lookahead_der_long_lookahead_body"
pattern = '\w+(?=\s{3,}end)'
input = "word end"
matches = [[0, 4]]
[[test]]
name = "lookahead_der_class_repetition"
pattern = '[a-z]+(?=[A-Z])'
input = "abcDef"
matches = [[0, 3]]
[[test]]
name = "lookahead_der_class_repetition_multi"
pattern = '[a-z]+(?=[A-Z])'
input = "abcDefGhi"
matches = [[0, 3], [4, 6]]
[[test]]
name = "lookahead_der_digit_before_alpha"
pattern = '\d+(?=[a-z])'
input = "123abc456def"
matches = [[0, 3], [6, 9]]
[[test]]
name = "lookahead_der_chained_three"
pattern = '\w+(?=.*x)(?=.*y)(?=.*z)'
input = "abc xyz"
matches = [[0, 3]]
[[test]]
name = "lookahead_der_chained_three_no_match"
pattern = '\w+(?=.*x)(?=.*y)(?=.*z)'
input = "abc xy"
matches = []
[[test]]
name = "lookahead_der_alt_body"
pattern = '(cat|dog)(?=s)'
input = "cats dogs"
matches = [[0, 3], [5, 8]]
[[test]]
name = "lookahead_der_alt_body_no_s"
pattern = '(cat|dog)(?=s)'
input = "cat dog"
matches = []
[[test]]
name = "lookaround_phone_uk"
pattern = '(\s*\(?0\d{4}\)?\s*\d{6}\s*)|(\s*\(?0\d{3}\)?\s*\d{3}\s*\d{4}\s*)'
input = "01603 123123"
matches = [[0, 12]]
[[test]]
name = "wb_digit_alt_basic"
pattern = '\b(?:4\d{3}|5\d{3}|6\d{3})\b'
input = "pay 4123 or 9999"
matches = [[4, 8]]
[[test]]
name = "wb_digit_alt_no_match"
pattern = '\b(?:4\d{3}|5\d{3}|6\d{3})\b'
input = "pay 9999 or 8888"
matches = []
[[test]]
name = "wb_digit_alt_multiple"
pattern = '\b(?:4\d|5\d|6\d)\b'
input = "41 52 63 71"
matches = [[0, 2], [3, 5], [6, 8]]
[[test]]
name = "wb_digit_no_boundary_no_match"
pattern = '\b4\d+\b'
input = "x4123x"
matches = []
[[test]]
name = "wb_digit_at_start"
pattern = '\b4\d+\b'
input = "4123 rest"
matches = [[0, 4]]
[[test]]
name = "fas_dotstar_la_foo_dotstar"
pattern = '[\s\S]+(?=foo)[\s\S]+'
input = "abc foo def"
matches = [[0, 11]]
[[test]]
name = "fas_dotstar_la_aaa"
pattern = '.*(?=aaa)'
input = "baaa"
matches = [[0, 1], [1, 1]]
[[test]]
name = "empty_lookbehind"
pattern = '(?<=)'
input = "test"
matches = [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
[[test]]
name = "star_lookbehind_charclass"
pattern = '(?<=\s*)[,\]]'
input = "a, b]"
matches = [[1, 2], [4, 5]]
[[test]]
name = "bare_lookahead_zero_width_dot_hash"
pattern = '(?=[.#])'
input = "a.b#c"
matches = [[1, 1], [3, 3]]
[[test]]
name = "bare_lookahead_zero_width_no_match"
pattern = '(?=[.#])'
input = "plain"
matches = []
[[test]]
name = "bare_lookahead_zero_width_at_zero"
pattern = '(?=[.#])'
input = "."
matches = [[0, 0]]
[[test]]
name = "anchored_bare_lookahead_hello"
pattern = '^(?=.*[A-Z])'
input = "Hello"
matches = [[0, 0]]
[[test]]
name = "anchored_bare_lookahead_lower"
pattern = '^(?=.*[A-Z])'
input = "hello"
matches = []
[[test]]
name = "anchored_bare_lookahead_mid_upper"
pattern = '^(?=.*[A-Z])'
input = "abcDEF"
matches = [[0, 0]]
[[test]]
name = "neg_lookahead_shared_prefix_string_anchored"
pattern = '\A(?!a*c)a*c\z'
input = "aaa"
matches = []
[[test]]
name = "lookahead_then_word_boundary"
pattern = '\w(?=\s*\()\b'
input = "f ("
matches = [[0, 1]]
[[test]]
name = "empty_neg_lb_never_matches"
pattern = '(?<!)'
input = "abc x"
matches = []
[[test]]
name = "empty_neg_lb_then_a_never"
pattern = '(?<!)a'
input = "abc x"
matches = []
[[test]]
name = "neg_lb_optional_never"
pattern = '(?<!a?)'
input = "abc x"
matches = []
[[test]]
name = "neg_lb_word_star_never"
pattern = '(?<!\w*)x'
input = "abc x"
matches = []
[[test]]
name = "neg_lb_not_begin"
pattern = '(?<!\A)'
input = "abc"
matches = [[1, 1], [2, 2], [3, 3]]
[[test]]
name = "empty_lookbehind_all_positions"
pattern = '(?<=)'
input = "abc"
matches = [[0, 0], [1, 1], [2, 2], [3, 3]]
[[test]]
name = "neg_lb_begin_anchor_plus_minus_anchored"
pattern = '(?<!\A)[+-]'
input = "+b"
matches = []
[[test]]
name = "neg_lb_begin_anchor_plus_minus"
pattern = '(?<!\A)[+-]'
input = "a+b"
matches = [[1, 2]]
[[test]]
name = "neg_lb_begin_or_dot_slash_anchored"
pattern = '(?<!\A|\.)/'
input = "./b"
matches = []
[[test]]
name = "neg_lb_begin_or_dot_slash"
pattern = '(?<!\A|\.)/'
input = "a/b"
matches = [[1, 2]]
[[test]]
name = "stacked_lb_a_b"
pattern = '(?<=a)(?<=b)x'
input = "abx"
matches = []
[[test]]
name = "stacked_lb_a_b_bx"
pattern = '(?<=a)(?<=b)x'
input = "bx"
matches = []
[[test]]
name = "stacked_neg_lb_cx"
pattern = '(?<!a)(?<!b)x'
input = "cx"
matches = [[1, 2]]
[[test]]
name = "stacked_neg_lb_ax"
pattern = '(?<!a)(?<!b)x'
input = "ax"
matches = []
[[test]]
name = "stacked_neg_lb_bx"
pattern = '(?<!a)(?<!b)x'
input = "bx"
matches = []
[[test]]
name = "stacked_neg_lb_x"
pattern = '(?<!a)(?<!b)x'
input = "x"
matches = [[0, 1]]
[[test]]
name = "wb_neg_lb_dash_if_xif"
pattern = '\b(?<!-)if'
input = "xif"
matches = []
[[test]]
name = "wb_neg_lb_dash_if_dashif"
pattern = '\b(?<!-)if'
input = "-if"
matches = []
[[test]]
name = "wb_neg_lb_dash_if"
pattern = '\b(?<!-)if'
input = "if"
matches = [[0, 2]]
[[test]]
name = "wb_neg_lb_dash_if_spaced"
pattern = '\b(?<!-)if'
input = " if"
matches = [[1, 3]]
[[test]]
name = "lb_a_neg_lb_b_c_ac"
pattern = '(?<=a)(?<!b)c'
input = "ac"
matches = [[1, 2]]
[[test]]
name = "lb_a_neg_lb_b_c_bc"
pattern = '(?<=a)(?<!b)c'
input = "bc"
matches = []
[[test]]
name = "neg_lb_b_lb_a_c"
pattern = '(?<!b)(?<=a)c'
input = "ac"
matches = [[1, 2]]
[[test]]
name = "lb_a_star_wb_b_xb"
pattern = '(?<=a.*)\bb'
input = "a xb"
matches = []
[[test]]
name = "lb_a_star_wb_b"
pattern = '(?<=a.*)\bb'
input = "a b"
matches = [[2, 3]]
[[test]]
name = "neg_la_universal_star_b_xyb"
pattern = '\A(?!a)[\s\S]*b\z'
input = "xyb"
matches = [[0, 3]]
[[test]]
name = "neg_la_universal_star_b_ab"
pattern = '\A(?!a)[\s\S]*b\z'
input = "ab"
matches = []
[[test]]
name = "neg_la_universal_plus_b_xyb"
pattern = '\A(?!a)[\s\S]+b\z'
input = "xyb"
matches = [[0, 3]]
[[test]]
name = "neg_la_universal_plus_b_ab"
pattern = '\A(?!a)[\s\S]+b\z'
input = "ab"
matches = []
[[test]]
name = "jsdoc_block_open"
pattern = '\A[\t ]*/\*\*(?!/)([\s\S]*)\s*\*/'
input = " /** @type {Command[]} */"
matches = [[0, 28]]
[[test]]
name = "jsdoc_no_import"
pattern = '\A(?![^\n\r]*import)[\s]*/\*\*([\s\S]*)\*/'
input = " /** @type {Command[]} */"
matches = [[0, 28]]
[[test]]
name = "neg_lb_digit_a_1a"
pattern = '(?<!\d)a'
input = "1a"
matches = []
[[test]]
name = "neg_lb_digit_a_xa"
pattern = '(?<!\d)a'
input = "xa"
matches = [[1, 2]]
[[test]]
name = "neg_lb_not_begin_x"
pattern = '(?<!\A)x'
input = "abc"
matches = []
[[test]]
name = "neg_lb_space_a_xa"
pattern = '(?<!\s)a'
input = "xa"
matches = [[1, 2]]
[[test]]
name = "neg_lb_space_a_spaced"
pattern = '(?<!\s)a'
input = " a"
matches = []
[[test]]
name = "lookaround_commute"
pattern = '(?=b)(?<=a)'
input = "ab"
matches = [[1, 1]]
[[test]]
name = "lookahead_alt_end_of_line"
pattern = 'x(?=a|$)'
input = "xa xb x\nxc x"
matches = [[0, 1], [6, 7], [11, 12]]
[[test]]
name = "fwd_prefix_lookahead_not_dropped_no_match"
pattern = 'abc(?=[de])'
input = "abcx"
matches = []
[[test]]
name = "fwd_prefix_lookahead_not_dropped_d"
pattern = 'abc(?=[de])'
input = "abcd"
matches = [[0, 3]]
[[test]]
name = "fwd_prefix_lookahead_not_dropped_e"
pattern = 'abc(?=[de])'
input = "abce"
matches = [[0, 3]]
[[test]]
name = "lookahead_nullable_star_tail_a"
pattern = '(?=a)_*a'
input = "a"
matches = [[0, 1]]
[[test]]
name = "lookahead_nullable_star_tail_aa"
pattern = '(?=a)_*a'
input = "aa"
matches = [[0, 2]]
[[test]]
name = "lookahead_nullable_double_star_a"
pattern = '(?=a)__*a'
input = "a"
matches = []
[[test]]
name = "lookahead_nonspace_star_S"
pattern = '(?=\S)[\s\S]*\S'
input = " x"
matches = [[1, 2]]
[[test]]
name = "neg_la_end_newline_at_end"
pattern = '(\n(?!\z))'
input = "a\n"
matches = []
[[test]]
name = "neg_la_end_newline_mid"
pattern = '(\n(?!\z))'
input = "a\nb"
matches = [[1, 2]]
[[test]]
name = "neg_la_end_sole_newline"
pattern = '(\n(?!\z))'
input = "\n"
matches = []
[[test]]
name = "neg_la_end_double_newline"
pattern = '(\n(?!\z))'
input = "\n\n"
matches = [[0, 1]]
[[test]]
name = "neg_la_end_a_double_newline"
pattern = '(\n(?!\z))'
input = "a\n\n"
matches = [[1, 2]]
[[test]]
name = "neg_la_end_a_alone"
pattern = 'a(?!\z)'
input = "a"
matches = []
[[test]]
name = "neg_la_end_a_before_b"
pattern = 'a(?!\z)'
input = "ab"
matches = [[0, 1]]
[[test]]
name = "neg_la_end_a_before_newline"
pattern = 'a(?!\z)'
input = "a\n"
matches = [[0, 1]]
[[test]]
name = "neg_la_begin_x_sole"
pattern = '(?!\A)x'
input = "x"
matches = []
[[test]]
name = "neg_la_begin_x_double"
pattern = '(?!\A)x'
input = "xx"
matches = [[1, 2]]
[[test]]
name = "neg_la_begin_x_after_a"
pattern = '(?!\A)x'
input = "ax"
matches = [[1, 2]]
[[test]]
name = "neg_la_begin_upper_after_lower"
pattern = '(?!\A)(?=[A-Z])'
input = "aB"
matches = [[1, 1]]
[[test]]
name = "neg_la_begin_upper_at_start"
pattern = '(?!\A)(?=[A-Z])'
input = "Ba"
matches = []
[[test]]
name = "neg_la_both_ends_mid"
pattern = '(?!\A).(?!\z)'
input = "abc"
matches = [[1, 2]]
[[test]]
name = "neg_la_both_ends_short"
pattern = '(?!\A).(?!\z)'
input = "ab"
matches = []
[[test]]
name = "bug13_nested_lookahead_zero_width_c"
pattern = '(?=(?=c)c{1,3})'
input = "c"
matches = [[0, 0]]
[[test]]
name = "bug13_nested_lookahead_zero_width_cc"
pattern = '(?=(?=c)c{1,3})'
input = "cc"
matches = [[0, 0], [1, 1]]
[[test]]
name = "bug13_nested_lookahead_zero_width_ccc"
pattern = '(?=(?=c)c{1,3})'
input = "ccc"
matches = [[0, 0], [1, 1], [2, 2]]