이 문자열은 "1X214X942,0SX"
입니다. 여기서 각 X는 ASCII 코드 160이있는 "비 분리 공백"(정확히는 공백 임)을 나타내며 S는 공백 문자를 나타냅니다.VBA 6 : 복잡한 문자열을 인식하지 못하는 정규식
(\d{1,3}\s(\d{3}\s)*\d{3}(\,\d{1,3})?|\d{1,3}\,\d{1,3})
을하지만 그것은 작동하지 않습니다,이 공백이 인식되지 않는 및 표현은 942,0
을 잡는다 :
나는이 정규식으로 인식하려합니다.
RegExr이 전체 문자열을 잡을 수 있는지 확인하려고했는데 (http://gskinner.com/RegExr/?2v8ic) 내 VBA에 문제가 있습니까?
알려 주시기 바랍니다. \s
가 VBScript.RegExp
구현의 비 분리 공백을 포함하지 않는,
Sub ChangeNumberFromFRformatToENformat()
Dim SectionText As String
Dim RegEx As Object, RegC As Object, RegM As Object
Dim i As Integer
Set RegEx = CreateObject("vbscript.regexp")
With RegEx
.Global = True
.MultiLine = False
.Pattern = "(\d{1,3}\s(\d{3}\s)*\d{3}(\,\d{1,3})?|\d{1,3}\,\d{1,3})"
End With
For i = 1 To ActiveDocument.Sections.Count()
SectionText = ActiveDocument.Sections(i).Range.Text
If RegEx.test(SectionText) Then
Set RegC = RegEx.Execute(SectionText)
For Each RegM In RegC
Call ChangeThousandAndDecimalSeparator(RegM.Value)
Next 'For Each RegM In RegC
Set RegC = Nothing
Set RegM = Nothing
End If
Next 'For i = 6 To ActiveDocument.Sections.Count()
Set RegEx = Nothing
End Sub
Tomalak 대단히 감사합니다! 내 비즈니스 규칙이 변경 되었기 때문에이 문제를 테스트 할 기회를 얻지 못했습니다. 당신의 방법이 크리스의 –