Пожалуйста, попробуйте с 2 обратными слешами и с 4 (вместо 3). Вот логика:
Некоторые слои кода используют \
в качестве escape-символа. Таким образом, \s
используется для «пробела», а не s
и т. Д. Затем саму обратную косую черту необходимо экранировать: \\
.
Другой слой кодов должен избегать вещей. Чтобы \s
не был просто s
, обратная косая черта должна быть экранирована, поэтому \\s
. Для \\
все, что он знает, это то, что есть две обратные косые черты. Так что каждому нужно убежать: \\\\
.
Я видел, например, это с PHP и регулярными выражениями.
Работая задом наперед, я бы ожидал
[^<\\\]
-->
[^<\] -- after removing one layer
-->
[^<] -- after removing the second layer
Если ваше регулярное выражение 3-bs не замечает обратную косую черту, мой анализ, вероятно, верен.
Версия 4-бс:
[^<\\\\] -->
[^<\\] -->
[^<\] -- (At this point `\` is just another char, as you wanted)