我正在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
RegEx返回以下内容:
53:178
作为一组,然后.40
作为另一组
我无法在返回的子表达式组上保持一致,因为使用nnn:nnn.nn, .nn
作为附加组而不是已经描述的组的成员来返回。
我对这里的操作感到困惑。我想念一些东西
因为我希望NN:NN.NN
形式的任何条目都将被拒绝为匹配项。
经过40分钟的反复试验,我无法弄清故障。
RegEx代码段为:
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)
答案 0 :(得分:2)
dataview
也匹配数字。使用\w
来匹配任何ASCII字母(您甚至不需要[a-zA-Z]
)
+
请参见regex demo
此外,"^(" & Chr(167) & "\s)(\d+:\d+)\.([a-zA-Z].*$)"
不是特殊的正则表达式元字符,不需要转义。
如果要确保:
之后的字符不是数字,请使用.
之后的[^0-9]
或\D
:
\.
请参见this regex demo。如果不能为空格,请使用
^(§\s)(\d+:\d+)\.(\D.*)
请参见another demo。
答案 1 :(得分:1)
使用类似^(§\s)([0-9:.]*)\.(\w+.*$)
的样式,请参见https://regex101.com/r/VGg7TJ/2
所以这将只接受任何匹配的数字,直到文本开始为止。