VBA RegEx - 匹配所有非字母数字字符但忽略空格

时间:2018-06-04 02:55:22

标签: regex vba

我正在寻找一个正则表达式来消除标点符号和特殊字符。有没有办法让正则表达式匹配\ W并忽略空格?

我有一个正在查找的VBA脚本(如果有必要,我很乐意分享),但我想我只是缺少一些简单的东西。当我运行代码时,它确实有效,但strPattern =“\ W”也在抓取空格。我知道我可以使用\ S选项,但我似乎无法让它执行AND,可以这么说。

代码:

Sub RegEx_Pattern_Removal()
    Dim strPattern As String: strPattern = "\W"
    Dim strReplace As String: strReplace = ""
    Dim regEx As New RegExp
    Dim strInput As String
    Dim myRange As Range

    'Application.ScreenUpdating = False

    Set myRange = Application.Selection

    With regEx
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = strPattern
    End With

    For Each Cell In myRange
        If Cell.Value <> Empty Then
            strInput = Cell.Value
            If regEx.Test(strInput) = True Then
                Cell.Value = regEx.Replace(strInput, strReplace)
                MsgBox "It's a match, baby!"
            Else
                MsgBox "No Match! Or... you fucked up"
            End If
        End If
    Next

    'Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:-1)

@ slai链接上的道具

这是使用的清洁模式之一:

strPattern = "[^\dA-Za-z \xa0]*"

对于持续存在的“神秘空间”,它实际上是一个硬空间,可以通过十六进制格式识别为\ xa0,在模式的末尾可以看到。

这种模式完全符合我的需要。