0

我正在尝试将浮点数的任何组合与 Microsoft Word 内的 VBA 中的正则表达式进行匹配。

例子:

<text="">
<text="1">
<text="2">
<text="3">
<text="3.5">
<text="4">
<text="44">

我尝试了以下模式:

regex.Pattern = "<text=" & Chr(34) & "\d*\.*\d*" & Chr(34) & ">"
regex.Pattern = "<text=" & Chr(34) & "[\d\.]*" & Chr(34) & ">"

有趣的是,这些模式都不匹配 44。

4

2 回答 2

0

让我们分解一下。浮点数有两部分,整数和小数。格式上有一些选择:

这是一个非常常见的符号模式:

regex.Pattern = "<text=" & Chr(34) & "(-?\d+(\.\d+)?)?" & Chr(34) & ">"

一些选择:

  • 你想支持省略不可分割的部分吗?(例如'.001')在第一个数字匹配中
    使用*而不是:+(-?\d*(\.\d+)?)?

  • 你想支持前导零吗?(例如000。)
    这会更棘手:)

  • 你想支持没有小数部分的小数点吗?(例如'12.')
    然后?在小数点后添加匹配:(-?\d*(\.?\d+)?)?

  • 小数部分是强制性的吗?
    删除最后一个?(-?\d*(\.?\d+))?

于 2012-11-14T16:23:19.167 回答
0

正则表达式测试器站点,

正整数 ---^\d+$
负整数 ---^-\d+$
整数 ---^-{0,1}\d+$
正数 ---^\d*\.{0,1}\d+$
负数 ---^-\d*\.{0,1}\d+$
正数或负数 -^-{0,1}\d*\.{0,1}\d+$

测试空结果是否有效,并假设所有正数,你最终会得到

regex.Pattern = "<text=" & Chr(34) & "\d*\.{0,1}\d*" & Chr(34) & ">"
于 2012-11-14T16:16:25.183 回答