Pull to refresh

Comments 4

… одно выражение, что бы править всеми…

Вы усложнили выражение более, чем это требуется.


  1. (?<=^|[^\x5c]|(?:^|[^\x5c])(?:\x5c{2})+)\x5b[^\x5d]+\x5d
    полностью эквивалентно
    (?<=^|[^\x5c](?:\x5c{2})*)\x5b[^\x5d]+\x5d
  2. Дело вкуса, конечно, но то, что Вы называете "избавление от ряби в глазах" еще сильнее усложняет восприятие регулярного выражения (как мне кажется)
    (?<=^|[^\\](?:\\{2})*)\[[^\]]+\]
    выглядит привычно и читаемо. Хотя, если честно, сам иногда пишу в похожем варианте, когда слишком много экранированных символов в регулярном выражении:
    var re = "(?<=^|[^\\](?:\\{2})*)LT[^GT]+GT".replace( /LT/g, "\\[" ).replace( /GT/g, "\\]" );

Спасибо. Да, точно, переусложнил.

Хотя, кажется, нет. Ваш сокращённый вариант не учитывает этот случай:

начало строки + экранированные слеши + тег.

Например:

\\[b]
Sign up to leave a comment.

Articles