首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VBScript查找可变长度字符串并用相同长度的空格字符串替换的正则表达式

问使用VBScript查找可变长度字符串并用相同长度的空格字符串替换的正则表达式
EN

Stack Overflow用户
提问于 2014-06-05 00:38:22
回答 1查看 1.5K关注 0票数 0

希望在VBScript中找到与找到的字符串长度匹配的正则表达式替换代码的帮助。有相当多的变化在网上发现,但我的技能水平不是很广泛,所以弄清楚他们是一个长期和令人沮丧的。也许我用错了工具,不确定了。

挑战是调整固定长度文件中的字段,该字段没有为收件人正确格式化。有一个字段包含可变长度的文本、破折号和更多的文本。可变长度字符串和破折号都需要用空格替换。这将保持在固定宽度文件中的定位。

我得出的结果是: strOriginal =“b(A-Z0-9{2,4}-)”

这对于数据文件匹配是很好的。专家能指导我做正确的替换吗?

谢谢你,德鲁

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-05 07:03:00

您需要为正则表达式使用替换函数。

代码语言:javascript
复制
Option Explicit

Function replaceFunction(matchString, position, fullString)
    replaceFunction = Space(Len(matchString))
End Function 

Dim originalString
    originalString = "W 121ST ST 3A8-2B"

Dim changedString

    With New RegExp
        .Global = True
        .Pattern = "\b[A-Z0-9]{2,4}-"
        changedString = .Replace( originalString, GetRef("replaceFunction") )
    End With

    WScript.Echo "[" & originalString & "]" 
    WScript.Echo "[" & changedString & "]"

函数参数是与正则表达式中的模式匹配的字符串部分,在输入字符串中找到匹配项的位置,以及正在处理的完整字符串。

在您的示例中,对于每个匹配项,将调用该函数,它将返回一个空格字符串,其长度与匹配字符串的长度相同。

编辑了以适应注释

代码语言:javascript
复制
Option Explicit

Function replaceFunction(matchString, prefix, toSpaces, position, fullString)
    replaceFunction = prefix & Space(Len(toSpaces))
End Function 

Dim originalString
    originalString = "W 121ST ST 3A8-2B" & vbCRLF & "W 12-ST ST 3A8-2B"

Dim changedString

    With New RegExp
        .Global = True
        .Multiline = True
        .Pattern = "^(.{10,}\b)([A-Z0-9]{2,4}-)"
        changedString = .Replace( originalString, GetRef("replaceFunction") )
    End With

    WScript.Echo  originalString 
    WScript.Echo  changedString 

现在它处理一个多行输入,对于每一行,它搜索前10个(或更多)字符,然后用空格替换字符串。正则表达式定义两个捕获组,它们作为参数传递给替换函数。该函数将返回第一个捕获组(前缀),后面是替换不需要的字符串的相应空格数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24049845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档