Regex 如何用正则表达式替换部分输入字符串?

Regex 如何用正则表达式替换部分输入字符串?,regex,vba,Regex,Vba,我现在正在做一个VBA项目,项目的一部分是处理输入数据。我的问题是,每次输入的字符串都不一样 目前,我对1000.00之类的值存在问题。它们有一个空白而不是一个分隔符。看起来是这样的: 2020.02.10 13:40:14 106353221 GOLD sell 0.08 1 571.80 1 571.26 1 534.00 2020.02.11 14:23:42 1 571.43 0.00 0.26 2.90 如您所见,有些值类似于示例1 561.80。现在我正在寻找一个解决方案来删除

我现在正在做一个VBA项目,项目的一部分是处理输入数据。我的问题是,每次输入的字符串都不一样

目前,我对1000.00之类的值存在问题。它们有一个空白而不是一个分隔符。看起来是这样的:

2020.02.10 13:40:14 106353221 GOLD sell 0.08 1 571.80 1 571.26 1 534.00 2020.02.11 14:23:42 1 571.43 0.00  0.26  2.90
如您所见,有些值类似于示例1 561.80。现在我正在寻找一个解决方案来删除这个空间。问题是我不能使用Replace,因为下一步是将字符串拆分成数组。在这里,我需要正确拆分的空间

我的想法是使用正则表达式,到目前为止我想到了:

    Public Function repla(myString As String, Muster As String)
    
    Dim regex As New RegExp
        
    regex.Global = True
    regex.Pattern = Muster
    Set Fundstellen = regex.Execute(myString)
    
    Ersatz = "Test"
    
    repla = regex.Replace(myString, Ersatz)
    
    End Function

    Debug.Print repla(TextboxText, "[0-9] [0-9][0-9][0-9].[0-9][0-9]")
这将为我提供以下输出:

2020.02.10 13:40:1Test221 GOLD sell 0.08 Test Test Test 2020.02.11 14:23:42 Test 0.00  0.26  2.90
如您所见,目前存在两个问题:

  • 它还取代了不应该使用的数字,比如106353221
  • 到目前为止,我还没有用self替换字符串的一部分,但是没有使用“”

有人知道我怎样才能让它工作吗??现在我被卡住了。

事实上,我找到了一种方法,用它自己来替换字符串的一部分,但不使用“”

但是我仍然有一个问题,106353221号也被替换了

函数目前看起来是这样的(字符串是硬编码的,只是为了测试)

处理前的输出如下所示:

2020.02.10 13:40:14 106353221 GOLD sell 0.08 1 571.80 1 571.26 1 534.00 2020.02.11 14:23:42 1 571.43 0.00  0.26  2.90
2020.02.10 13:40:14 106353221黄金卖出0.08 157.80 157.26 1534.00 2020.02.11 14:23:42 157.43 0.00 0.26 2.90

处理后的输出如下所示:

2020.02.10 13:40:14 106353221 GOLD sell 0.08 1 571.80 1 571.26 1 534.00 2020.02.11 14:23:42 1 571.43 0.00  0.26  2.90
2020.02.10 13:40:14106353221黄金卖出0.08 1571.80 1571.26 1534.00 2020.02.11 14:23:42 1571.43 0.00 0.26 2.90


问题仍然是字符串的“106353221”部分。。有人想到了吗?

事实上,我找到了一种方法,用字符串本身替换字符串的一部分,但不使用“”

但是我仍然有一个问题,106353221号也被替换了

函数目前看起来是这样的(字符串是硬编码的,只是为了测试)

处理前的输出如下所示:

2020.02.10 13:40:14 106353221 GOLD sell 0.08 1 571.80 1 571.26 1 534.00 2020.02.11 14:23:42 1 571.43 0.00  0.26  2.90
2020.02.10 13:40:14 106353221黄金卖出0.08 157.80 157.26 1534.00 2020.02.11 14:23:42 157.43 0.00 0.26 2.90

处理后的输出如下所示:

2020.02.10 13:40:14 106353221 GOLD sell 0.08 1 571.80 1 571.26 1 534.00 2020.02.11 14:23:42 1 571.43 0.00  0.26  2.90
2020.02.10 13:40:14106353221黄金卖出0.08 1571.80 1571.26 1534.00 2020.02.11 14:23:42 1571.43 0.00 0.26 2.90

问题仍然是字符串的“106353221”部分。。有人有主意了吗?

试试看, 括号内的零件对应于子匹配

(子匹配(1))(子匹配(2))(子匹配(3))

试试看, 括号内的零件对应于子匹配

(子匹配(1))(子匹配(2))(子匹配(3))


尝试类似于
\D\D\D{3}.\D{2)\D
的方法这会让我失败..知道原因吗?尝试类似于
\D\D\D{3}.\D{2)\D
的方法这会让我失败..知道原因吗?几乎完美,谢谢你的帮助!但它与我的解决方案有相同的问题…输出字符串如下所示“2020.02.10 13:40:14106353221黄金卖出0.08 1571.80 1571.26 1534.00 2020.02.11 14:23:42 1571.43 0.00 0.26 2.90”。你看到问题了吗?出于某种原因,106353221之前的空格被删除了……对此有什么想法吗?@LucaS,添加空格([0-9])()````,我编辑了答案。非常感谢您的帮助。像这样它工作得非常完美!几乎完美,谢谢您的帮助!但它与我的解决方案有相同的问题…输出字符串如下“2020.02.10 13:40:14106353221 GOLD sell 0.08 1571.80 1571.26 1534.00 2020.02.11 14:23:42 1571.43 0.00 0.26 2.90“。你看到问题了吗?出于某种原因,106353221之前的空格被删除了……对此有什么想法吗?@LucaS,添加空格([0-9])()”`````,我编辑了答案。非常感谢你的帮助。就像这样,它工作得非常完美!