ВБА:

ВБА:

У меня есть несколько случаев [слово]- [слово] в тексте, например, self- interest вместо self-interest, что является правильной формой. Я пытаюсь удалить лишнее пространство после штриха с помощью подстановочных знаков MS Word. В поле Найти и заменить я ввожу:

Найти: *- *
Заменить на: \1-\2

Однако это не работает. Какова правильная форма для этого?

решение1

ВБА:

Запустить WrapReplaceв документе Word.

Sub WrapReplace()
    Call RegExpReplace("(\w+)\-\s(\w+)", "$1-$2")
End Sub

Private Sub RegExpReplace(pattern As String, Backreference As String)
    Dim strReplacement As String
    Set oRegExp = CreateObject("VBScript.RegExp")

    With oRegExp
        .Global = True
        .IgnoreCase = False
        .pattern = pattern
    End With

    Set matches = oRegExp.Execute(ActiveDocument.Content)
 
    For Each match In matches
        Set matchRange = ActiveDocument.Content
    
        strReplacement = oRegExp.Replace(match.Value, Backreference)
    
        With matchRange.Find
            .Text = match.Value
            .Replacement.Text = strReplacement
        
            .Wrap = wdFindAsk
            .Execute Replace:=wdReplaceOne
        End With
    Next

End Sub

решение2

Вы забыли сообщить Word, что такое части \1 и \2. Добавьте круглые скобки вокруг дефиса и звездочки, но оставьте пробел между ними. В вашем Replace with вам не нужен дефис, так как теперь он захвачен как часть \1.

введите описание изображения здесь

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