VBA 기초 지식 정리 (정규 표현 식)
14146 단어 VBA
' , , 、 。
' :
'1、
'2、 , , 。
'2 사용법
인용 법
' VBE : - , : Microsoft VBScript Regular Expressions 5.5,
'Dim regex As New RegExp
Sub t1()
Dim reg As New RegExp
End Sub
직접 건설 법
' Dim regex As Object
' Set regex = CreateObject("VBScript.RegExp") '
Sub t2()
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
End Sub
3 상용 속성
'1 글로벌 속성:
' true,
' False, 1
'1 :
Sub t3()
Dim reg As New RegExp
Dim sr
sr = "ABCEA"
With reg
.Global = True
.Pattern = "A"
Debug.Print .Replace(sr, "")
End With
End Sub
'2 Ignorecase 속성' 검색 이 대소 문 자 를 구분 하 는 경우 False (결 성 값) True 를 구분 하지 않 습 니 다.
정규 표현 식 을 정의 하 는 '3 Pattern 속성' 문자열결 성 된 값 은 빈 텍스트 입 니 다.4 Multiline 속성, 문자열 이 여러 줄 을 사 용 했 는 지, 여러 줄 이 라면 $각 줄 의 마지막 줄 에 적 용 됩 니 다.
Sub t4()
Dim reg As New RegExp
Dim sr
sr = "AEA" & Chr(10) & "ABCA"
With reg
.Global = True
.MultiLine = True
'.Pattern = "A$"
.Pattern = "^A"
Debug.Print .Replace(sr, "")
End With
End Sub
'5 Execute 방법
' MatchCollection , Match ,
' :
'FirstIndex:
'Length;
'Value:
Sub t5()
Dim reg As New RegExp
Dim sr, matc
sr = "A454BCEA5"
With reg
.Global = True
.Pattern = "A\d+"
Set matc = .Execute(sr)
End With
Stop
End Sub
Function ns(rg)
Dim reg As New RegExp
Dim sr, ma, s, m, x
With reg
.Global = True
.Pattern = "\d*\.?\d*"
Set ma = .Execute(rg)
For Each m In ma
s = s + Val(m)
Next m
End With
ns = s
' Stop
End Function
'6. 텍스트 방법
' , 。
Sub t7()
Dim reg As New RegExp
Dim sr
sr = "BCR6EA"
With reg
.Global = True
.Pattern = "\d+"
If .test(sr) Then MsgBox " "
End With
End Sub
----------------------------------------------------
Function (rg As String, k As Integer)
Dim regx As New RegExp
With regx
.Global = True
If k = 1 Then
.Pattern = "\D"
ElseIf k = 2 Then
.Pattern = "\w"
End If
= .Replace(rg, "")
End With
End Function
상용 부호
'정규 표현 식 의 핵심 은 대비 규칙, 즉 Pattern 속성 을 설정 하 는 것 입 니 다. 이 규칙 들 을 구성 하 는 것 은 문자 자 체 를 제외 하고 특정한 의 미 를 가 진 기호 입 니 다.'다음은 정규 표현 식 에서 자주 사용 되 는 기호의 첫 부분 을 소개 한다.
번호
'1. 줄 바 꿈 문자 (\ r), 리 턴 문자 (), 탭 문자 (\ t), \ 자신 (\)
'2. 특별한 의미 가 있 는 문자 앞 에 놓 고 자신 을 나타 낸다.' $',' ^ ','. '
'3. 여러 글자 와 일치 하 는 앞 에 놓 기
'\d 0~9
'\w , A~Z,a~z,0~9,_
'\s 、 、
' , , \D
Sub t1()
Dim regx As New RegExp
Dim sr
sr = "AE45B646C"
With regx
.Global = True
.Pattern = "\d" '
Debug.Print .Replace(sr, "")
End With
End Sub
'. (점)
'
'+ 호' + 는 한 글자 가 여러 개 중복 되 는 것 을 나타 낸다.
Sub t11()
Dim regx As New RegExp
Dim sr
sr = "A234CA7A"
With regx
.Global = True
.Pattern = "A\d+"
Debug.Print .Replace(sr, "")
End With
End Sub
'{} 번' 은 중복 횟수 를 설정 할 수 있 습 니 다.
'1 {n} n
Sub t16()
Dim regx As New RegExp
Dim sr
sr = "A234CA7A67"
With regx
.Global = True
.Pattern = "\d{5}" '
Debug.Print .Replace(sr, "")
End With
End Sub
---------------------------------------------------
'2 {m,n} m , n
Sub t22()
Dim regx As New RegExp
Dim sr
sr = "A234CA7A6789"
With regx
.Global = True
.Pattern = "\d{4,5}" '
Debug.Print .Replace(sr, "")
End With
End Sub
------------------------------------------------------------
'3 {m,} m , +
Sub t23()
Dim regx As New RegExp
Dim sr
sr = "A2348t6CA7A67"
With regx
.Global = True
.Pattern = "\d{2,}" '
Debug.Print .Replace(sr, "")
End With
End Sub
'* 0 등 임 의 회 는 {0,} 에 해당 합 니 다. 예 를 들 어' ^ * b '는' b ',' ^ ^ b '와 일치 할 수 있 습 니 다.
’ ? '1 일치 식 0 회 또는 1 회, {0, 1} 에 해당 합 니 다. 예 를 들 어 "a [cd]?" 는 "a", "ac", "ad" 와 일치 할 수 있 습 니 다.
Sub t24()
Dim regx As New RegExp
Dim sr
sr = "A23.48CA7A6..7"
With regx
.Global = True
.Pattern = "\d+\.?\d+" ' 1
Debug.Print .Replace(sr, "")
End With
End Sub
----------------------------------------------------
'2 이용 +?세그먼트 일치
Sub t87()
Dim regex As New RegExp
Dim sr, mat, m
sr = "aa
bb
"
With regex
.Global = True
.Pattern = ".*?"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
--------------------------------------------------------
Sub t88()
Dim regex As New RegExp
Dim sr, mat, m
sr = " aba aca ada "
With regex
.Global = True
.Pattern = "\s.+?\s"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
'기호: 제 한 된 문 자 는 맨 앞 에 있 습 니 다. 예 를 들 어 \ d 는 숫자 로 시작 합 니 다.
Sub T34()
Dim regex As New RegExp
Dim sr, mat, m
sr = "d234 345d43"
With regex
.Global = True
.Pattern = "^\d*"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
'$기호: 제 한 된 문 자 는 맨 뒤에 있 습 니 다. 예 를 들 어 A $는 마지막 문자 가 A 임 을 표시 합 니 다.
Sub T3433()
Dim regex As New RegExp
Dim sr, mat, m
sr = "R243r"
With regex
.Global = True
.Pattern = "^\D.*\D$"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
'\ b' 빈 칸 (시작 과 끝 포함)
Sub t26()
Dim regx As New RegExp
Dim sr
sr = "A12dA56 A4"
With regx
.Global = True
.Pattern = "\bA\d+"
Debug.Print .Replace(sr, "")
End With
End Sub
--------------------------------------------------
Sub T272()
Dim regex As New RegExp
Dim sr, mat, m
sr = "ad bf cr de ee"
With regex
.Global = True
.Pattern = ".+?\b"
Set mat = .Execute(sr)
For Each m In mat
If m <> " " Then Debug.Print m
Next m
End With
End Sub
'|' 은 왼쪽 이나 오른쪽 에 맞 는 두 가지 조건 을 설정 할 수 있 습 니 다.
Sub t27()
Dim regx As New RegExp
Dim sr
sr = "A12DA56 A4B34D"
With regx
.Global = True
.Pattern = "A\d+|B\d+"
Debug.Print .Replace(sr, "")
End With
End Sub
'\ un 은 n 과 일치 합 니 다. 그 중에서 n 은 4 비트 16 진수 로 표 시 된 유 니 코드 문자 입 니 다.'한자 1 의 인 코딩 은 4e 00 이 고 마지막 코드 는 9fa 5 이다.
Sub t2722()
Dim regx As New RegExp
Dim sr
sr = "A12d A 56 A4"
With regx
.Global = True
.Pattern = "[\u4e00-\u9fa5]"
Debug.Print .Replace(sr, "")
End With
End Sub
'()' 는 괄호 안 을 하나의 전체 로 중복 시 킬 수 있다.
Sub t29()
Dim regx As New RegExp
Dim sr
sr = "A3A3QA3A37BDFE87A8"
With regx
.Global = True
.Pattern = "((A3){2})" ' A3A3
Debug.Print .Replace(sr, "")
End With
End Sub
'일치 하 는 결 과 를 가 져 올 때 괄호 안의 표현 식 은 \ \ 숫자 로 참조 할 수 있 습 니 다.
Sub t30()
Dim regx As New RegExp
Dim sr
sr = "A3A3QA3A37BDFE87A8"
With regx
.Global = True
.Pattern = "((A3){2})Q\1"
Debug.Print .Replace(sr, "")
End With
End Sub
-----------------------------------------
Sub t31()
Dim regx As New RegExp
Dim sr
sr = "A3A3B4B4QB4B47BDFE87A8"
With regx
.Global = True
.Pattern = "((A3){2})((B4){2})Q\4"
Debug.Print .Replace(sr, "")
End With
End Sub
'(? = 문자) 로 예측 하여 찾 을 수 있 습 니 다. 일치 하 는 항목 에 도착 하면 일치 하 는 텍스트 전에 다음 일치 하 는 항목 을 검색 합 니 다.미래 에 대비 하여 일치 하 는 항목 을 저장 하지 않 습 니 다.
' :
Sub t343()
Dim regex As New RegExp
Dim sr, mat, m
sr = "100 8000 57 "
With regex
.Global = True
.Pattern = "\d+(?= )" ' , ( ,
' ) () , , ,
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
-----------------------------------------
' : , 4-8 ,
Sub t355()
Dim regex As New RegExp
Dim sr, mat, m
sr = "A8ayaa"
With regex
.Global = True
.Pattern = "^(?=.*\d).{4,8}$"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
'(?! 문자) 로 마이너스 예측 검색 을 할 수 있 습 니 다. 일치 하 는 항목 에 도착 하면 일치 하 는 텍스트 전에 다음 일치 하 는 항목 을 검색 합 니 다.미래 에 대비 하여 일치 하 는 항목 을 저장 하지 않 습 니 다.
Sub t356()
Dim regex As New RegExp
Dim sr, mat, m
sr = " "
With regex
.Global = True
.Pattern = "^(?! ).*"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
'() 와 | 함께 사용 하면 or 를 표시 할 수 있 습 니 다.
Sub t344()
Dim regex As New RegExp
Dim sr, mat, m
sr = "100 800 7 "
With regex
.Global = True
.Pattern = "\d+( | )"
'.Pattern = "\d+(?= | )"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
'[]' 사용 자 는 괄호 [] 에 일련의 문 자 를 포함 하고 그 중의 임의의 문자 와 일치 할 수 있 습 니 다.[^] 로 일련의 문 자 를 포함 하지 않 으 면 그 중의 문자 이외 의 임의의 문자 와 일치 할 수 있 습 니 다.같은 이치 로, 비록 그 중 어느 하나 와 일치 할 수 있 지만, 단지 하나 일 뿐, 여러 개 는 아니다
'1 괄호 안에 있 는 것 중 하나 와 일치 합 니 다.
Sub t29()
Dim regx As New RegExp
Dim sr
sr = "ABDC"
With regx
.Global = True
.Pattern = "[BC]"
Debug.Print .Replace(sr, "")
End With
End Sub
'2 괄호 안의 문자 가 아 닙 니 다.
Sub T35()
Dim regx As New RegExp
Dim sr
sr = "ABCDBDC"
With regx
.Global = True
.Pattern = "[^BC]"
Debug.Print .Replace(sr, "")
End With
End Sub
3. 한 구간 에서
Sub t38()
Dim regx As New RegExp
Dim sr
sr = "ABCDGWDFUFE"
With regx
.Global = True
.Pattern = "[a-h]"
Debug.Print .Replace(sr, "")
End With
End Sub
----------------------------------------------
Sub t40()
Dim regx As New RegExp
Dim sr
sr = "124325436789"
With regx
.Global = True
.Pattern = "[1-47-9]"
Debug.Print .Replace(sr, "")
End With
End Sub
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel VBA에서 SIR 모델을 구현합니다.신형 코로나 바이러스(COVID-19)의 환자수 추이를 나타내는 수리 모델 「SIR 모델」을 자주(잘) 보게 되었습니다. SIR 모델에서는 감염되지 않은 사람을 S(susceptible), 감염자를 I(infecti...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.