You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VBScript正则表达式移除{INT-SAM}与;或 间文本空格

VBScript正则移除{INT-SAM}与;或制表符间文本的空格解决方案

我来帮你搞定这个需求!首先咱们明确目标:要定位所有以{INT-SAM}开头,到第一个;或者制表符(\t)结束的文本段,把这段中间的所有空格都去掉。下面是具体的实现方案:

思路拆解

  1. 用正则匹配出符合规则的片段:{INT-SAM} + 中间带空格的文本 + 结束符(;或\t)
  2. 对匹配到的中间文本部分,移除所有空格
  3. 把处理后的片段替换回原文本

代码实现

Dim originalText, processedText, regEx, matches, match
originalText = "MY, 12	MOM, 56	{INT-SAM}BARS ABCD;{INT-SAM}CHEC ABC TH [SAMPLE CODE] BOLE IRTH.	SAMPLE 678 1213y12415	ZINC, 34, ABC,78	{INT-SAM}CAST IRTH;{INT-SAM}ZXYZ DEFG TH [SAMPLE CODE] BEEB ABCD EFGH.	SAMPLE 901 101 9y8 1617	M 12	M 56	{INT-SAM}BARS ABCD;{INT-SAM}CHEC IR TH;{INT-NUM}132435 [SAMPLE CODE] BOLE XYZR.	SAMPLE LOTS WINTER"

Set regEx = New RegExp
regEx.Global = True ' 全局匹配所有符合条件的片段
regEx.Pattern = "({INT-SAM})([^;\t]+)([;\t])" ' 正则表达式:捕获前缀、中间内容、结束符

processedText = originalText
Set matches = regEx.Execute(processedText)

' 反向遍历匹配项(避免替换后索引混乱)
For i = matches.Count - 1 To 0 Step -1
    Set match = matches(i)
    ' 移除中间捕获组的所有空格
    Dim cleanedMiddleText
    cleanedMiddleText = Replace(match.SubMatches(1), " ", "")
    ' 拼接处理后的片段并替换
    processedText = Left(processedText, match.FirstIndex) & _
                    match.SubMatches(0) & cleanedMiddleText & match.SubMatches(2) & _
                    Mid(processedText, match.FirstIndex + match.Length + 1)
Next

WScript.Echo "处理前文本:" & vbCrLf & originalText & vbCrLf & vbCrLf & "处理后文本:" & vbCrLf & processedText

正则表达式解释

({INT-SAM})([^;\t]+)([;\t]) 各部分含义:

  • ({INT-SAM}):捕获第一个组,固定前缀{INT-SAM}
  • ([^;\t]+):捕获第二个组,匹配除了;和制表符之外的所有字符(也就是我们要处理的带空格的内容)
  • ([;\t]):捕获第三个组,匹配结束符;或制表符,确保我们只处理到第一个结束符为止

处理效果示例

原片段:{INT-SAM}BARS ABCD; → 处理后:{INT-SAM}BARSABCD;
原片段:{INT-SAM}CHEC ABC TH [SAMPLE CODE] BOLE IRTH. → 处理后:{INT-SAM}CHECABCTH[SAMPLECODE]BOLEIRTH. (注意这里结束符是制表符,所以处理到制表符前的内容)

这样就能精准完成你要的操作啦!

内容的提问来源于stack exchange,提问作者BugBug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:07:54