gpt4 book ai didi

regex - VBA奇怪的正则表达式问题

转载 作者:行者123 更新时间:2023-12-04 21:51:26 25 4
gpt4 key购买 nike

我在 Excel 中使用 Visual Basic 来更改一些数据

图案:

"^(" & Chr(167) & "\s)(\d+\:\d+)\.(\w+.*$)"

在某些情况下,文本是:
§ 34:149.Lorem ipsum dolor sit amet

我想将文本分成
34:149在当前单元格中,然后 "Lorem ipsum dolor sit amet"在下一栏中

我遇到的问题是给定值如下所示:
§ 53:178.40

正则表达式返回: 53:178作为一组然后 .40作为另一个

我无法获得返回的子表达式组的一致性,因为 nnn:nnn.nn, .nn作为一个额外的组返回,而不是已经描述的组的成员。

我对这里的操作感到困惑。我错过了一些东西,
因为我希望任何形式的条目 NN:NN.NN被拒绝为匹配项。

经过 40 分钟的反复试验,我无法确定故障所在。

正则表达式代码片段是:
strPattern = "^(" & Chr(167) & "\s)(\d+\:\d+)\.(\w+.*$)"
replaceString = "$2"
replaceString = "$2$3"
replaceString2 = "$4"

RE.Global = True
RE.MultiLine = True
RE.IgnoreCase = False
RE.pattern = strPattern

result1 = RE.Replace(source, replaceString)
result2 = RE.Replace(source, replaceString2)

最佳答案

\w也匹配数字。使用[a-zA-Z]而是匹配任何 ASCII 字母(你甚至不需要 + 之后):

"^(" & Chr(167) & "\s)(\d+:\d+)\.([a-zA-Z].*$)"

regex demo

另外, :不是特殊的正则表达式元字符,它不需要转义。

如果您想确保 . 之后的字符不是数字使用 [^0-9]\D\. 之后:
^(§\s)(\d+:\d+)\.(\D.*)

this regex demo .如果它不能是空格,请使用
^(§\s)(\d+:\d+)\.([^\d\s].*)

another demo .

关于regex - VBA奇怪的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53478460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com