根据模式

时间:2017-01-05 01:47:45

标签: regex excel vba

我正在尝试执行以下操作。

模式:

aaaaa.BBBBB - 在(。)

之后添加新行

aaaaaBBBBB - 在看到大写字母时添加新行。

aaaaa12345 - 在有数字时添加空格(输出:aaaaa 12345)

12345aaaaa - 在数字后面有一个字母时添加空格(输出:12345 aaaaa)

  

值:

     

客户询问了21年的计划请关注1234567

     

ReGex代码需要以下内容:

     

客户询问21 (空间)年计划**(新行)**请   跟进(空间) 1234567

     

结果:

     

客户询问了21年计划

     

请跟进1234567。

如何添加(空格)(换行符),我如何识别模式并进行特定替换?

以下是我目前使用的代码:

Function SplitCaps(strIn As String) As String
    Dim objRegex As Object
    Set objRegex = CreateObject("vbscript.regexp")

    With objRegex 
        .Global = True
        .Pattern = "([a-z])([A-Z0-9])"
        SplitCaps = .Replace(strIn, "$1 $2")
    End With 
End Function

Output for above code

1 个答案:

答案 0 :(得分:2)

您可以使用两个正则表达式替换。第一个在0aa0之间添加空格(在数字和小写字母之间),第二个在aAa.A之间创建换行符。

  1. ([a-z])([0-9])|([0-9])([a-z])并替换为$1$3 $2$4
  2. ([a-z])\.?([A-Z])并替换为$1\n$2
  3. 如果您想在最后添加句点,请使用$并替换为\.
  4. 试试这段代码:

    Function SplitCaps(strIn As String) As String
        Dim objRegex As Object
        Set objRegex = CreateObject("vbscript.regexp")
        Dim result As String
    
        With objRegex 
            .Global = True
            .Pattern = "([a-z])([0-9])|([0-9])([a-z])"
            result = .Replace(strIn, "$1$3 $2$4")
        End With
        With objRegex 
            .Global = True
            .Pattern = "([a-z])\.?([A-Z])"
            result = .Replace(result, "$1\n$2")
        End With
        SplitCaps = result
    End Function