匹配\ d和\。在正则表达式中

时间:2012-11-14 16:06:36

标签: vba word-vba

我正在尝试将浮点数的任意组合与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匹配。

2 个答案:

答案 0 :(得分:0)

来自regex tester网站

正整数--- ^\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) & ">"

答案 1 :(得分:0)

让我们分解吧。浮点数有两个部分,积分和十进制。格式有一些选择:

以下是一种非常常见的符号模式:

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

一些选择:

  • 您想支持省略整体部分吗? (例如'.001')
    在第一个数字匹配中使用*代替+(-?\d*(\.\d+)?)?

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

  • 您想支持小数点而不是小数部分吗? (例如'12。')
    然后在小数点匹配后添加?(-?\d*(\.?\d+)?)?

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