유니 코드 문자를 정규식과 일치

타투

VBA for Word 2019에서 정규식을 사용할 수 있습니다.

Dim RegEx As New RegExp
Dim Matches As MatchCollection

RegEx.Pattern = "[\d\w]+"
Text = "HelloWorld"
Set Matches = RegEx.Execute(Text)

그러나 모든 유니 코드 문자와 모든 숫자를 어떻게 일치시킬 수 있습니까?

\p{L} PHP에서는 잘 작동하지만 VBA for Word 2019에서는 작동하지 않습니다.

문자와 숫자가있는 단어를 찾고 싶습니다. 그래서 PHP에서 이것을 사용합니다 [\p{L}\p{N}]+. VBA에서 어떤 패턴을 사용할 수 있습니까?

현재 저는 독일어 문자와 단어를 일치시키고 싶습니다 äöüßÄÖÜ. 그러나 아마도 다른 언어에도 이것이 필요할 것입니다.

토 말락

그러나 모든 유니 코드 문자와 모든 숫자를 어떻게 일치시킬 수 있습니까?

"VBScript 정규식 5.5"(여기서 사용하고 있다고 확신합니다)는 "VBA 정규식"이 아니라 VBA에서 사용할 수있는 COM 라이브러리입니다. 기본 제공 메타 문자 (예 :)가있는 유니 코드를 지원하지 않으며 \w유니 코드 문자 클래스 (예 :)에 대한 지식이 없습니다 \p{L}. 그러나 물론 여전히 유니 코드 문자를 일치시킬 수 있습니다.

직접 경기

물론 가장 간단한 방법은 패턴에서 검색하는 유니 코드 문자를 직접 사용하는 것입니다. VBA는 유니 코드 문자열을 사용하므로 유니 코드 일치 자체는 문제가되지 않습니다. 그 자체가 유니 코드 아닌 VBA 소스 코드에서 유니 코드를 나타내는 것은 다른 문제입니다. 하지만 ChrW()도움이 될 수 있습니다.

매치하고 싶은 캐릭터가 있다고 가정하면

RegEx.Pattern = ChrW(&h4E16) & ChrW(&h754C) 
Set Matches = RegEx.Execute(Text)

Msgbox Matches(0)

위 코드는 16 진수 ( &h...) ChrW()를 사용하고 런타임에 유니 코드 문자 U + 4E16 및 U + 754C (世界)를 만듭니다. 텍스트에있을 때 찾을 수 있습니다. 이것은 지루하지만 찾고있는 단어를 이미 알고 있다면 잘 작동합니다.

범위

문자 범위를 일치 시키려면 그렇게 할 수도 있습니다. 범위의 시작점과 끝점을 사용합니다. 예를 들어 "CJK Unified Ideographs"범위의 기본 블록은 U + 4E00에서 U + 9FFF까지입니다.

RegEx.Pattern = "[" + ChrW(&h4E00) & "-" & ChrW(&h9FFF) & "]+" 
Set Matches = RegEx.Execute(Text)

Msgbox Matches(0)

따라서 이것은 [a-z]+모든 CJK 문자에 걸쳐 있는 것처럼 자연스러운 범위를 만듭니다 . 일치시킬 범위를 정의해야하므로 기본 제공 지원이있는 것이 덜 편리하지만 아무것도 막을 수 없습니다.

주의 사항

위는 BMP ( Basic Multilingual Plane ) 내부의 문자 매칭에 관한 것 입니다. Emoji와 같은 BMP 외부의 문자는 이러한 문자가 유니 코드에서 작동하는 방식으로 인해 훨씬 ​​더 어렵습니다. 여전히 가능하지만 예쁘지는 않을 것입니다.

같은 캐릭터를 표현하는 방법은 여러 가지가 있습니다. 예를 들어, ä고유 한 단일 코드 포인트로 표시하거나 점 a에 대한 두 번째 코드 포인트 (U + 0308 "◌̈")가 이어질 수 있습니다. 입력 문자열이 특정 문자를 어떻게 나타내는 지 알 수 없기 때문에 문자열을 검색하기 전에 유니 코드 정규화 를 조사하여 문자열을 균일하게 만들어야합니다. VBA에서는 Win32 API를 사용 하여이 작업을 수행 할 수 있습니다 .

도우미

유니 코드 범위를 수동으로 조사 할 수 있지만 너무 많기 때문에 일부를 놓치기 쉽습니다. 지금도 여전히 인터넷 아카이브에있는 유니 코드 범위를 수동으로 선택하는 데 유용한 도우미를 기억합니다 : http://web.archive.org/web/20191118224127/http://kourge.net/projects/regexp-unicode-block

여러 범위에 걸쳐있는 정규식을 빠르게 빌드 할 수 있습니다. JavaScript를 겨냥했지만 VBA 코드에 대한 출력을 조정하는 것은 쉽습니다.

"정규식 : 유니 코드 블록 범위 일치"도구

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

유니 코드 문자를 JSON 스키마 패턴 (정규식)과 일치시키는 방법

분류에서Dev

Excel VBA의 유니 코드 문자에 대한 정규식과 일치하지 않음

분류에서Dev

독일어 문자와 일치하지 않는 Java 유니 코드 정규식

분류에서Dev

유니 코드 패턴 일치를위한 정규식

분류에서Dev

정규식 유니 코드 문자가 일치하지 않습니다.

분류에서Dev

유니 코드 문자로 시작하는 정규식 일치 단어가 예기치 않은 결과를 반환합니다.

분류에서Dev

정규식 유니 코드 문자

분류에서Dev

정규식-숫자가 아닌 유니 코드 알파벳 만 일치

분류에서Dev

유니 코드 문자가있는 제목 대소 문자 또는 ALLCAPS와 일치하는 정규식

분류에서Dev

여러 파일에서 정규식 (유니 코드 문자 클래스 Devanagari 일치) 찾기 및 바꾸기

분류에서Dev

Java 7이없는 정규식 문자열에서 \ uFFFF보다 큰 유니 코드 코드 포인트를 일치시키는 방법은 무엇입니까?

분류에서Dev

정규식과 일치하는 문자열에 문자 유지

분류에서Dev

문자 나 구두점 기호와 일치하지 않는 유니 코드 정규식

분류에서Dev

한 번에 여러 속성에 맞지 않는 유니 코드 문자와 일치하는 정규식 검색

분류에서Dev

Aerospike에서 정규식과 일치하는 모든 레코드를 얻는 방법은 무엇입니까?

분류에서Dev

Scala 정규식 : 긴 유니 코드 Devanagari 패턴 일치 실패

분류에서Dev

빈 정규식은 모든 문자열과 일치합니다.

분류에서Dev

문자의 분음 부호를 무시하는 정규식 유니 코드 텍스트와 일치하는 방법 (Á É Í)

분류에서Dev

정규식 : 문자를 일치시키고 결과에서 제외합니까?

분류에서Dev

정규식에 유니 코드 문자 지정

분류에서Dev

정규식과 일치 할 때 특정 문자열 부분 유지

분류에서Dev

정규식과 유사한 다른 문자열과 일치하지 않는 경우에만 문자열 일치?

분류에서Dev

정규식 일치를 위해 Mojo :: UserAgent로 결과 디코딩

분류에서Dev

정규식 문자 클래스의 문자열과 일치합니까?

분류에서Dev

JSON으로 인코딩 된 문자열과 일치하는 정규식

분류에서Dev

유니 코드가 아닌 문자를 제거하는 Python 정규식

분류에서Dev

파이썬 정규식 : re.ASCII가있는 패턴은 여전히 유니 코드 문자와 일치 할 수 있습니까?

분류에서Dev

sed를 사용하여 정규식과 일치하는 문자열을 와일드 카드로 바꾸기

분류에서Dev

정규식은 단일 문자의 첫 번째 발생과 일치합니다.

Related 관련 기사

  1. 1

    유니 코드 문자를 JSON 스키마 패턴 (정규식)과 일치시키는 방법

  2. 2

    Excel VBA의 유니 코드 문자에 대한 정규식과 일치하지 않음

  3. 3

    독일어 문자와 일치하지 않는 Java 유니 코드 정규식

  4. 4

    유니 코드 패턴 일치를위한 정규식

  5. 5

    정규식 유니 코드 문자가 일치하지 않습니다.

  6. 6

    유니 코드 문자로 시작하는 정규식 일치 단어가 예기치 않은 결과를 반환합니다.

  7. 7

    정규식 유니 코드 문자

  8. 8

    정규식-숫자가 아닌 유니 코드 알파벳 만 일치

  9. 9

    유니 코드 문자가있는 제목 대소 문자 또는 ALLCAPS와 일치하는 정규식

  10. 10

    여러 파일에서 정규식 (유니 코드 문자 클래스 Devanagari 일치) 찾기 및 바꾸기

  11. 11

    Java 7이없는 정규식 문자열에서 \ uFFFF보다 큰 유니 코드 코드 포인트를 일치시키는 방법은 무엇입니까?

  12. 12

    정규식과 일치하는 문자열에 문자 유지

  13. 13

    문자 나 구두점 기호와 일치하지 않는 유니 코드 정규식

  14. 14

    한 번에 여러 속성에 맞지 않는 유니 코드 문자와 일치하는 정규식 검색

  15. 15

    Aerospike에서 정규식과 일치하는 모든 레코드를 얻는 방법은 무엇입니까?

  16. 16

    Scala 정규식 : 긴 유니 코드 Devanagari 패턴 일치 실패

  17. 17

    빈 정규식은 모든 문자열과 일치합니다.

  18. 18

    문자의 분음 부호를 무시하는 정규식 유니 코드 텍스트와 일치하는 방법 (Á É Í)

  19. 19

    정규식 : 문자를 일치시키고 결과에서 제외합니까?

  20. 20

    정규식에 유니 코드 문자 지정

  21. 21

    정규식과 일치 할 때 특정 문자열 부분 유지

  22. 22

    정규식과 유사한 다른 문자열과 일치하지 않는 경우에만 문자열 일치?

  23. 23

    정규식 일치를 위해 Mojo :: UserAgent로 결과 디코딩

  24. 24

    정규식 문자 클래스의 문자열과 일치합니까?

  25. 25

    JSON으로 인코딩 된 문자열과 일치하는 정규식

  26. 26

    유니 코드가 아닌 문자를 제거하는 Python 정규식

  27. 27

    파이썬 정규식 : re.ASCII가있는 패턴은 여전히 유니 코드 문자와 일치 할 수 있습니까?

  28. 28

    sed를 사용하여 정규식과 일치하는 문자열을 와일드 카드로 바꾸기

  29. 29

    정규식은 단일 문자의 첫 번째 발생과 일치합니다.

뜨겁다태그

보관