У меня есть эта строка "1X214X942,0SX"
, где каждый X представляет "неразрывный пробел" (точный пробел) с кодом ASCII 160, а S представляет символ пробела.
Я пытаюсьраспознать его с помощью этого регулярного выражения:
(\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?
Пожалуйста, сообщите!
Вот мой код:
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