Я работаю в справочном документе API, и мне нужно отредактировать большое количество строк за 1 снимок. Все строки выглядят как int/void/string App* и мне нужно отредактировать их все, чтобы сказать "int App *". Я написал простой поиск по шаблону, который выглядит как <[!i]*> <App*> и выбирает любое количество слов между первым <>.

Каждый прочитанный мною ресурс MSWord предполагает, что использование <> указывает Word явно выбирать только одно слово. От самих Microsoft:

Символы меньше и больше (<>) обозначают начало и конец каждого слова соответственно. Они гарантируют, что поиск возвращает одно слово.

Соответствующий скриншот неправильного соответствия
Линии, которые я пытаюсь сопоставить

Здесь я что-то не так делаю или это какая-то ошибка?

1 ответ1

0

Я думаю, что ваше правильное выражение таково:

  • Найти:
    \<[^>]@\> \<([^>]@)\>
  • Заменить на:
    int \1

Каждый прочитанный мною ресурс MSWord предполагает, что использование <> указывает Word явно выбирать только одно слово.

> and <действительно совпадают с границами слова, однако оно соответствует только одному слову только в том случае, если выражение между ними также является правильным, однако вам не нужно использовать их в своем выражении.

Вы должны избегать их (\<), чтобы соответствовать им буквально.

Другие изменения в вашем выражении:

  • [^>] - вам нужно сопоставить текст, не содержащий закрывающей >
  • * to @ - в регулярных выражениях Word * поддерживается его общая роль "ноль или более символов", вам нужно использовать @ для "предыдущий раз или более"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .