2014-11-13 2 views
4

정규식을 사용하여 텍스트를 찾는 동안 나는 어딘가에서 잘못 가고있다.찾기 및 바꾸기 regex | 대체 연산자

이것은 내가 사용하고있는 코드입니다.

findText = "(Event Handling|Event Handling \(EH\))" 
Debug.Print findText 
With Selection.Find 
    .Text = findText 
    .Replacement.Text = "Replaced" 
    .Forward = True 
    .Wrap = wdFindAsk 
    .Format = False 
    .matchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = True 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
Selection.Find.Execute 
Selection.Find.Execute Replace:=wdReplaceAll 

나는 통로에 Event Handling 또는 Event Handling (EH)을 찾기 위해 노력하고 있지만, OR 연산자가 작동하지 않습니다.

Event Handling을 별도로 찾으려고 할 때 작동합니다. Event Handling (EH)에 대해서도 마찬가지입니다. 하지만 OR 연산자 |과 함께 작동하지 않습니다. 왜?

답변

4

Word의 기본 제공 찾기 기능은 제한된 정규식 집합 만 지원합니다. 당신은 전체, 보통, 표준 정규 표현식을 사용하려면, 당신은 같은 것을 할 필요가 : 당신이 당신의 통과를 선택하고이를 실행하면 당신이 의도 한대로

Dim regExp As Object 
Set regExp = CreateObject("vbscript.regexp") 

With regExp 
    .Pattern = "(Event Handling \(EH\)|Event Handling)" 
    .Global = True 
    Selection.Text = .Replace(Selection.Text, "Replaced") 
End With 

, 텍스트가 대체됩니다. 그러나 Event Handling \(EH\)은 검색 패턴이 "(Event Handling \(EH\)|Event Handling)" 인 첫 번째 문자가되어야합니다. 원래 Event Handling이 처음으로 오면 그 문자는 처음으로 바뀌어 (EH)이 남게됩니다.

또는 사용하려는 경우 Word의 내장 Find, 다음 두 검색을 수행 - 여기, 너무 Event Handling \(EH\)가 첫 번째해야한다 :

'Settings 
With Selection.Find 
    .Replacement.text = "Replaced" 
    .Forward = True 
    .Wrap = wdFindAsk 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = True 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 

'First find 
With Selection.Find 
    .text = "Event Handling \(EH\)" 
    .Execute Replace:=wdReplaceAll 
End With 

'Second find 
With Selection.Find 
    .text = "Event Handling" 
    .Execute Replace:=wdReplaceAll 
End With 
+0

죄송 allMatches이 객체 right..how 내가 일치하는 내용을 대체 할 수있다 ..? – user123

+0

나는 이미이 두 가지 검색 방법을 사용했습니다. 트랙 변경을 활성화합니다. 그래서 두 번째로 트랙 변경 내용을 대체합니다. MAb (MAb (striked)) MAb – user123

+0

좋아, 내 대답의 상단에 편집 한 Regexp 코드를 보았 니? –

1

마이크로 소프트 워드의 정기적 인 작업 않습니다 교체 & 찾기 한정된 일련의 기능 만 갖춘 표현식. "고급"/ "추가"드롭 다운 창에서 와일드 카드 사용 옵션을 클릭해야합니다.

이 MVP 문서 문서 방법이 사용하는 : Finding and replacing characters using wildcards

+0

이 링크의 관련 정보를 귀하의 답변에 추가 할 수 있습니까? – Fjodr