Word 2010 와일드 카드 검색-ABC.DEF.XYZ 형식의 텍스트 찾기


3

ABC.DEF.XYZ 형식으로 Word 2010에서 텍스트를 찾으려고합니다. 이것은 본질적으로 단어 구문으로 작성된 Java 구문을 사용하여 코드 참조를 찾는 것입니다. 3 요소 참조는 예일뿐입니다. 실제 참조는 최소 2 개의 요소와 최대 5 개의 요소를 갖습니다.

나는 이것을 작동시키기 위해 많은 와일드 카드 (와 와일드 카드가 아닌) 조합을 시도했지만 운이 없었습니다. 내가 시도한 것들 중 일부는 다음과 같습니다.

  1. <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
    참고, 이것은 실제로 2- 요소 참조를 찾기 위해 작동합니다. 더 큰 문자열 내에서 패턴을 찾을 때 맞지 않습니다 (예 : 3 요소 참조의 요소 2와 3 일치)

  2. <([a-z0-9A-Z]@)>(.<([a-z0-9A-Z]@)>)@
    오류가 발생했습니다-유효하지 않은 패턴

  3. <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
    Word가 15 분 이상 중단되어 단일 일치 항목을 찾지 못하는 데 너무 오래 걸렸습니다 (문서는 약 150 페이지의 텍스트이므로 처리하기에는 너무 많은 것일 수 있습니다)

  4. <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
    내가 이것을 시도했을 때 실제로 단어가 추락했습니다.

이상적으로는 작동하는 # 2 버전이 이상적이라고 생각하지만 패턴을 유효하게 만드는 방법을 모르겠습니다.

이것이 가능하지 않다면 # 1을 사용하여 모든 것을 잡을 수 있기를 바랍니다 (왜 특정 문자열과 일치하고 다른 문자열과 일치하지 않는지 확실하지 않음).

도움을 주시면 감사하겠습니다.

답변:


1

Word의 와일드 카드 검색 대신 Word의 VBA RegEx 엔진을 사용할 수 있습니다.


좋아, 작업은 다음 패턴을 가진 모든 문자열을 찾는 것이 었습니다.

###.###  
###.###.###
###.###.###.###
###.###.###.###.###

내가 만들 수있는 가장 좋은 패턴은

([\w\d]{3}\.){1,4}[\w\d]{3}

노란색으로 표시된 다음 조회수를 반환합니다.

여기에 이미지 설명을 입력하십시오

패턴 설명

  • \wAz의 단일 문자와 일치합니다. 대소 문자를 구분하지 않습니다
  • \d 숫자 0-9와 일치
  • [\w\d]{3}추천 문자 또는 숫자와 일치 ABC, abc, 123, Ab1-하지만 A$C나ABCD
  • ([\w\d]{3}\.){1,4}1,2,3 또는 4 개의 그룹과 다음 포인트를 찾습니다 \.. 마지막 그룹 [\w\d]{3}은 다음 사항을 요구하지 않습니다.

VBA 매크로

ALT+ F11를 눌러 VBA 편집기를 엽니 다. 코드를 어디에나 붙여넣고F5

Sub RegExMark()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")

    RegEx.Global = True
    RegEx.Pattern = "([\w\d]{3}\.){1,4}[\w\d]{3}"

    Set Matches = RegEx.Execute(ActiveDocument.Range)
    For Each hit In Matches
       Debug.Print hit
       ActiveDocument.Range(hit.FirstIndex, hit.FirstIndex + hit.Length). _
         HighlightColorIndex = wdYellow
    Next hit

End Sub

경고

예제 이미지에서 빨간색으로 표시된 것처럼 현재 패턴에는 결함이 있으며 너무 긴 문자열의 하위 문자열과도 일치합니다. 내가 가진 비트를 연주 \b, [^\.]그리고 \s있지만, 그 이외의 모든 경우에 일했다. 다른 사용자가 유효한 솔루션을 찾을 수 있습니까?

사용 된 자원


안녕 @ nixda, 감사합니다-이것은 내가 찾던 것입니다. VBA 정규식을 가지고 놀고 더 나은 것을 생각해 낼 수 있는지 알아 보겠습니다.
— zakaluka

@zakaluka 테스트를위한 빠른 팁 : 변경 wdYellow하기 wdAuto강조 표시된 결과를 제거합니다. 이것을 위해 seond 함수를 만들 것입니다. 그리고 즉시 창 (VBA 편집기 내에서 Ctrl + G)을 사용 debug.print하여 사물을 테스트하고보십시오.
— nixda

0

메모장 ++에 텍스트를 복사 한 다음 RegEx 옵션을 사용하여 변경하는 것이 좋습니다.

나는 그것이 고통스럽게 들린다는 것을 알고 있지만 일단 익숙해지면 프로그램 사이를 매우 빠르게 이동할 수 있습니다.

RegEx는 메모장 ++의 찾기 / 바꾸기 창의 옵션입니다. 다른 편집자들도 같은 기능을 가지고 있습니다.

이반


@ivanwalsh 님, 제안 해 주셔서 감사합니다. 그러나 메모장 ++은 Word의 서식을 유지하지 않으므로 150 페이지 문서의 서식을 다시 지정하는 것은 현실적이지 않기 때문에 실현할 수 없습니다.
— zakaluka

무슨 말인지 알아봐 정규식을 사용하는 매크로를 실행 해야하는 것처럼 보입니다 ... 어쨌든. 그것이 잘되기를 바랍니다. Ivan
— Walsh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.