У меня есть документ в слове. Мои параграфы как:

asdfasdfasdf
abcYear052014
asdfasdfasdf
acbYear122013

Я хочу удалить строку xxxYearyyyy, так что в блокноте ++ я положил

.*[0-9]201[0-9]$

и заменить пустым. Так что удалите строку, содержащую результат. Но когда я пытаюсь в Microsoft Office 2013, он не может найти ничего, несмотря на проверку «использовать подстановочный знак».

Потому что у моего файла слова есть жирный текст, поэтому я должен сделать это в офисе. Я думаю, что Microsoft Office не хорош в регулярных выражениях найти :(

Любая идея или решение?

Спасибо за помощь.

Рассматривать

3 ответа3

2

MS Office не поддерживает регулярные выражения так же, как редактор исходного кода, такой как Notepad++.

Вы можете попробовать это, это не полностью работает, хотя:

<*201[0-9]>

Вот справка MS, которая обсуждает подстановочные знаки и регулярные выражения в MS Office.

https://support.office.com/en-ca/article/Find-and-replace-text-by-using-regular-expressions-Advanced-eeaa03b0-e9f3-4921-b1e8-85b0ad1c427f

1

Регулярному выражению MS Word не хватает функциональности. Если вам абсолютно необходимо оставаться в слове (и не можете найти другого редактора, который бы имел хорошую поддержку регулярных выражений и сохранил разметку MS Word), я нашел для вас возможный обходной путь, используя слово регулярное выражение:

1) Префикс каждой строки с символом, который, как вы знаете, не появляется в вашем тексте. Сказать "#". Вы получите:

#asdfasdfasdf
#abcYear052014
#asdfasdfasdf
#acbYear122013

2) Теперь выполните поиск по регулярному выражению и замените его следующим регулярным выражением, которое найдет строки 2 и 4 в этом списке:

#[!#]@[0-9]201[0-9]

(Прочитайте: все, что начинается с «#», затем содержит один или несколько символов (@), которые не являются «#», затем имеет цифру, затем 201, а затем снова цифру.)

3) После поиска / замены, просто найдите / замените снова и замените все # на ничто.

Возможно, вы могли бы также работать с макросом VisualBasic для слова, быстрый Google показывает, что VB имеет регулярное выражение. Другой Google показывает, что кто-то в Stack Overflow уже сделал что-то подобное, по-видимому:https://stackoverflow.com/questions/6128880/vb-script-to-find-and-replace-text-in-word-document

Другой вариант - написать небольшой скрипт, такой как скрипт AHK или AU3, который имитирует нажатия клавиш, которые выполняют: 1. нажатие вниз, 2. нажатие home - shift+end - ctrl+c (копирование строки), 3. захват строки 4. Из буфера обмена и проверьте его на соответствие вашему регулярному выражению. 4. Нажмите Delete, если строка соответствует регулярному выражению. Я не уверен на 100%, что вышеперечисленное будет работать со всеми экзотическими возможностями для разметки MS Word, но если это просто жирные линии, это должно работать.

0

Я разобрался.

Он может заменить весь абзац или строку.

Для моего примера:

abcd abcd xxx1234 efgh asdf

Итак, я установил флажок "использовать подстановочный знак" в офисе поиска.

В окне поиска:

^13*xxx[0-9]{4,}*^13

В коробке замены:

^p

(удалить строку или абзац) или

^p(something you want to replace)^p

Так

^ 13 ввод в новую строку (используется только в поле поиска, когда используется подстановочный знак, а не замена - если вам нужно, вы должны использовать ^ p)^ p ввод в новую строку (можно использовать как поиск, так и замену, в обоих случаях использовать подстановочный знак или обычный )* любой символ xxx [0-9] {4,} xxx и число от 0-9 и должно иметь 4 цифры выше

Надеюсь, это поможет

Спасибо двум парням выше

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