使用VBScript正则表达式移除{INT-SAM}与;或 间文本空格
VBScript正则移除{INT-SAM}与;或制表符间文本的空格解决方案
我来帮你搞定这个需求!首先咱们明确目标:要定位所有以{INT-SAM}开头,到第一个;或者制表符(\t)结束的文本段,把这段中间的所有空格都去掉。下面是具体的实现方案:
思路拆解
- 用正则匹配出符合规则的片段:
{INT-SAM}+ 中间带空格的文本 + 结束符(;或\t) - 对匹配到的中间文本部分,移除所有空格
- 把处理后的片段替换回原文本
代码实现
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
相关产品推荐
相关产品推荐

