Regex не видит символ перед скобками
Регулярное выражение: >(?=([^(\"|\')]*(\"|\')[^(\"|\')]*(\"|\'))*(?![^(\"|\')]*(\"|\')))
Текст:
> комментарий
print: "((var))"
оно не находит > если дальше в тексте есть ()
Как это исправить, если учесть что текст может быть любым?
Ответы (1 шт):
У Вас какие-то странные классы символов. Внутри них не надо ставить (\'|\"), это синтаксис для выбора одной из нескольких альтернатив любой длины вне класса символов. Должно быть [^\"\'], если Вы имели в виду «не одинарные и не двойные кавычки».
После замены получается >(?=([^\"\']*(\"|\')[^\"\']*(\"|\'))*(?![^\"\']*(\"|\'))) (https://regex101.com/r/TN6OVf/1/). Не знаю, этого ли Вы хотели.
P.S. (\'|\") вне класса символов, с другой стороны, можно заменить на [\'\"], получив >(?=([^\"\']*[\"\'][^\"\']*[\"\'])*(?![^\"\']*[\"\'])) (https://regex101.com/r/TN6OVf/2).