Fixed bug where escaped parentheses in lookarounds were counted as regular parentheses instead of literals
This commit is contained in:
		| @@ -410,10 +410,10 @@ func shuntingYard(re string, flags ...ReFlag) ([]postfixNode, error) { | |||||||
| 				if i >= len(re_runes) { | 				if i >= len(re_runes) { | ||||||
| 					return nil, fmt.Errorf("unclosed lookaround") | 					return nil, fmt.Errorf("unclosed lookaround") | ||||||
| 				} | 				} | ||||||
| 				if re_runes[i] == '(' || re_runes[i] == nonCapLparenRune { | 				if (re_runes[i] == '(' && re_runes[i-1] != '\\') || re_runes[i] == nonCapLparenRune { | ||||||
| 					numOpenParens++ | 					numOpenParens++ | ||||||
| 				} | 				} | ||||||
| 				if re_runes[i] == ')' { | 				if re_runes[i] == ')' && re_runes[i-1] != '\\' { | ||||||
| 					numOpenParens-- | 					numOpenParens-- | ||||||
| 					if numOpenParens == 0 { | 					if numOpenParens == 0 { | ||||||
| 						break | 						break | ||||||
| @@ -589,10 +589,10 @@ func shuntingYard(re string, flags ...ReFlag) ([]postfixNode, error) { | |||||||
| 				if i >= len(re_postfix) { | 				if i >= len(re_postfix) { | ||||||
| 					return nil, fmt.Errorf("unclosed lookaround") | 					return nil, fmt.Errorf("unclosed lookaround") | ||||||
| 				} | 				} | ||||||
| 				if re_postfix[i] == '(' || re_postfix[i] == nonCapLparenRune { | 				if (re_postfix[i] == '(' && re_postfix[i-1] != '\\') || re_postfix[i] == nonCapLparenRune { | ||||||
| 					numOpenParens++ | 					numOpenParens++ | ||||||
| 				} | 				} | ||||||
| 				if re_postfix[i] == ')' { | 				if re_postfix[i] == ')' && re_postfix[i-1] != '\\' { | ||||||
| 					numOpenParens-- | 					numOpenParens-- | ||||||
| 					if numOpenParens == 0 { | 					if numOpenParens == 0 { | ||||||
| 						break | 						break | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user