Подстановочный знак в конце строки в 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