MS Word - найти только числа, состоящие из 3 цифр

MS Word - найти только числа, состоящие из 3 цифр

Нужно найти и удалить все номера, состоящие только из 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

Связанный контент