Использование RegReplace в Sublime Text 3 - PullRequest
0 голосов
/ 05 февраля 2019

Установите плагины RegReplace в Sublime Text 3, чтобы внести несколько изменений в документ.Следуя документации, создаем правила поиска и замены, но я представляю несколько проблем, решение которых не могу найти.Это созданные правила.

{
    "format": "3.0",
    "replacements":
    {

        "cambio_afiliacion":
        {
            "find": "\\affil{([0-9,]*)}",
            "replace": "<sup>\\1</sup>",
            "greedy": true,
            "greedy_scope": true
        },

        "cambio_section":
        {
            "find": "\\section{(.+?)}",
            "replace": "<h3>\\1</h3>",
            "greedy": true,
            "greedy_scope": true
        },

        "cambio_href":
        {
            "find": "\\href{(.+?)}{(.+?)}",
            "replace": "<a href=\"\\1\">\\2</a>",
            "greedy": true,
            "greedy_scope": true
        },

    }
}

И это ярлык, который вы создаете для запуска его в Default.sublime-keymap

{   
        "keys": ["ctrl+alt+j"],
        "command": "reg_replace",
        "args": {
            "replacements": [
                                "cambio_afiliacion",
                                "cambio_href",
                                "cambio_section",
        ],
            "find_only":false,
        }
    },

Текст редактируемого документа имеет видследует

 \href{google.com}{google.com}

 Ivonne Narváez Zurita\affil{1}*

 \section{Introducción}

Когда вы выполняете ярлык, вы вносите изменения только таким образом

\<a href="google.com">google.com</a>

 Ivonne Narváez Zurita\affil{1}*

 \section{Introducción}

и должны получить этот результат

<a href="google.com">google.com</a>
Ivonne Narváez Zurita<sup>1</sup>*
<h3>Introducción</h3>

Я не могу найтигде может быть ошибка, которая не выполняет все замены и не выполняет их правильно, как показано в \href, где я получаю \<a>.

1 Ответ

0 голосов
/ 05 февраля 2019

Поскольку шаблоны задаются в строках JSON в настройках, необходимо помнить, чтобы правильно определить escape-символы.\\a Будет таким же, как \a, который является специальным побегом регулярного выражения.Если вы хотите буквальное значение \, вам нужно убежать от побега \\\\a.Это дополнительный уровень косвенности.Вы должны учитывать экранирование строк JSON, экранирование шаблонов и .Это раздражает, но только так, как при использовании настроек Sublime.

        "cambio_afiliacion":
        {
            "find": "\\\\affil{([0-9,]*)}",
            "replace": "<sup>\\1</sup>",
            "greedy": true,
            "greedy_scope": true
        },

        "cambio_section":
        {
            "find": "\\\\section{(.+?)}",
            "replace": "<h3>\\1</h3>",
            "greedy": true,
            "greedy_scope": true
        },

        "cambio_href":
        {
            "find": "\\\\href{(.+?)}{(.+?)}",
            "replace": "<a href=\"\\1\">\\2</a>",
            "greedy": true,
            "greedy_scope": true
        },
...