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$CABCD
  • ([\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.