Подстановочный знак в конце строки в MS Word?

Моя схема сопоставления состоит из 4 частей:

    <1st part><2nd part><3rd part><4th part>

    Here,
     <1st part> = Fixed string "Fedora"
     <2nd part> = A 2 digit number "[0-9][0-9]"
     <3rd part> = Followed by a ":" symbol.
     <4th part> = one or more strings till the end of the current line. 

NOTE : <4th part> ends with the end of current line and contains only alphabets.

Я дошел до здесь:

Fedora[0-9][0-9]?[a-z]*[A-Z]*^l>

Но последняя часть - поиск конца строки - не дает ожидаемого результата. Обратите внимание, что я пытаюсь получить конец строки, когда Word автоматически разрывает строку.

Куда я иду не так?

2 ответа

Мне кажется, вам нужно:

Find = Fedora [0-9] {2}: * ^ l

или же:

Find = Fedora [0-9] {2}: * [^ l ^ 13]

Нет возможности использовать встроенный в Word Find чтобы найти конец строки, которая была сгенерирована автоматической версткой Word. Единственный вид "конца строки", который можно найти, - это разрыв строки, вставляемый нажатием Shift+Enter. Ручной перенос строки соответствует специальному символу Find ^l,

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

Или просто удалите Do While а также Loop линии и макрос найдет первый член.

Sub FindThenToEndOfLine()
    Dim r As Range, rDoc As Word.Range
    Dim bFound As Boolean

    bFound = True
    Set r = ActiveDocument.content
    Set rDoc = r.Duplicate

    r.Find.ClearFormatting
    Do While bFound
        With r.Find
            .text = "Fedora[0-9][0-9]:[a-z]*[A-Z]*" 
            .Forward = True
            .wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            bFound = .Execute
        End With

        If bFound Then
            r.Select
            Selection.EndKey Unit:=wdLine, Extend:=True
        End If
    Loop
End Sub
Другие вопросы по тегам