
Нужно найти и удалить все номера, состоящие только из 3 цифр, и игнорировать номера из 1-2 и 4+ цифр (если это как-то поможет, за третьей цифрой следует текст без пробела, например, "457text"). ОЧЕНЬ признателен за любую помощь!!!
решение1
Вы можете сделать это в Word (т.е. не в скрипте) с помощью поиска и замены с подстановочными знаками. Если за 3 цифрами всегда будет следовать буква:
или если вы хотите разрешить любой символ (например, знак препинания), вы можете исключить четвертый символ, являющийся цифрой, с помощью вариации:
В обоих примерах в разделе «Найти» круглые скобки обозначают части — мы хотим найти три цифры в начале «слова» в качестве первой части и найти только те, где следующим символом является буква, т.е. вторую часть, которую мы хотим сохранить.
В замене на \2 означает, что мы «заменяем» наш найденный текст (например, 123A) только частью «A» (остальной текст после нее остается неизменным, так как не является частью результата «найти»).
Знак < означает начало слова, т.е. мы хотим, чтобы три цифры были в начале слова, но не хотим, чтобы три цифры были в середине более длинной последовательности (например, проигнорировать 12345, не найдя в ней 345).
Квадратные скобки представляют собой диапазон символов, так что [0-9] означает любую цифру от 0 до 9, а {3} означает последовательность из 3 таких символов. [A-Za-z] означает любую букву в нижнем или верхнем регистре. Альтернативный вариант с [!0-9] находит все, кроме (! не) цифр от 0 до 9.
решение2
Да, вы можете сделать это с помощью скрипта VBA. Чтобы открыть редактор VBA, нажмите одновременно клавиши ALT + F11. Введите следующий код в редактор VBA
Sub RegexReplace()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
On Error Resume Next
RegEx.Global = True
RegEx.Pattern = InputBox("[0-9][0-9][0-9]")
ActiveDocument.Range = _
RegEx.Replace(ActiveDocument.Range, InputBox(""))
End Sub