ABC.DEF.XYZ 형식으로 Word 2010에서 텍스트를 찾으려고합니다. 이것은 본질적으로 단어 구문으로 작성된 Java 구문을 사용하여 코드 참조를 찾는 것입니다. 3 요소 참조는 예일뿐입니다. 실제 참조는 최소 2 개의 요소와 최대 5 개의 요소를 갖습니다.
나는 이것을 작동시키기 위해 많은 와일드 카드 (와 와일드 카드가 아닌) 조합을 시도했지만 운이 없었습니다. 내가 시도한 것들 중 일부는 다음과 같습니다.
-
<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
참고, 이것은 실제로 2- 요소 참조를 찾기 위해 작동합니다. 더 큰 문자열 내에서 패턴을 찾을 때 맞지 않습니다 (예 : 3 요소 참조의 요소 2와 3 일치) -
<([a-z0-9A-Z]@)>(.<([a-z0-9A-Z]@)>)@
오류가 발생했습니다-유효하지 않은 패턴 -
<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
Word가 15 분 이상 중단되어 단일 일치 항목을 찾지 못하는 데 너무 오래 걸렸습니다 (문서는 약 150 페이지의 텍스트이므로 처리하기에는 너무 많은 것일 수 있습니다) <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
내가 이것을 시도했을 때 실제로 단어가 추락했습니다.
이상적으로는 작동하는 # 2 버전이 이상적이라고 생각하지만 패턴을 유효하게 만드는 방법을 모르겠습니다.
이것이 가능하지 않다면 # 1을 사용하여 모든 것을 잡을 수 있기를 바랍니다 (왜 특정 문자열과 일치하고 다른 문자열과 일치하지 않는지 확실하지 않음).
도움을 주시면 감사하겠습니다.
답변
Word의 와일드 카드 검색 대신 Word의 VBA RegEx 엔진을 사용할 수 있습니다.
좋아, 작업은 다음 패턴을 가진 모든 문자열을 찾는 것이 었습니다.
###.###
###.###.###
###.###.###.###
###.###.###.###.###
내가 만들 수있는 가장 좋은 패턴은
([\w\d]{3}\.){1,4}[\w\d]{3}
노란색으로 표시된 다음 조회수를 반환합니다.
패턴 설명
\w
Az의 단일 문자와 일치합니다. 대소 문자를 구분하지 않습니다\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
있지만, 그 이외의 모든 경우에 일했다. 다른 사용자가 유효한 솔루션을 찾을 수 있습니까?
사용 된 자원
답변
메모장 ++에 텍스트를 복사 한 다음 RegEx 옵션을 사용하여 변경하는 것이 좋습니다.
나는 그것이 고통스럽게 들린다는 것을 알고 있지만 일단 익숙해지면 프로그램 사이를 매우 빠르게 이동할 수 있습니다.
RegEx는 메모장 ++의 찾기 / 바꾸기 창의 옵션입니다. 다른 편집자들도 같은 기능을 가지고 있습니다.
이반