gpt4 book ai didi

regex - VBA 6 : regex not recognizing complicated string

转载 作者:行者123 更新时间:2023-12-03 01:14:18 25 4
gpt4 key购买 nike

我有这个字符串“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

最佳答案

序列 \s 与不间断空格不匹配,但是有一些方法可以做到这一点。您要考虑在正则表达式中使用的原子是 \xnn\nnn ——它们通过十六进制值或八进制值来匹配字符。

因此,要匹配 ASCII 160 的不间断空格,请指定 \xA0\240 之一,而不是 \s

关于regex - VBA 6 : regex not recognizing complicated string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com