我正在使用 RegexExtract 从文本中提取数字值。我使用了以下[0-9]+(\.[0-9][0-9]?)?链接中的以下正则表达式,但我发现它只提取小数点后的两个值。我还需要它前面的数字。不知道为什么它不起作用。我也尝试过它的不同变体。
我从中提取的文本并不总是相同的长度,大约有 100 个字符。在文本中,我只需要提取数值(x.xx):Gmax = 2.3428
ThisWorkbook.Worksheets(Warn.MachBox.Value & "_C1").Range("B" & Duncan2 + 1).Value = RegexExtract(ThisWorkbook.Worksheets(Warn.MachBox.Value & "_C1").Range("C" & Duncan2 + 1).Value, "Gmax = [0-9]+(\.[0-9][0-9]?)?")
我目前拥有它的方式以及我尝试过的不同变体只返回 0.34 并且不包括小数点之前的值(如果有的话)。我需要 2.34。
任何建议都非常感谢。谢谢!
编辑:忘记添加 RegexExtract 函数信息。这是在以下链接中找到的: 如何在文本字符串中提取文本
小智 6
我会用:
(\d+)(?:\.(\d{1,2}))?
Run Code Online (Sandbox Code Playgroud)
解释:
( # First matching group
\d # A digit (shorthand for [0-9])
+ # Any number of times
)
(?: # A non-matching group
\. # A literal dot
( # Second matching group
\d # A digit
{1,2} # 1 or 2 times (shorthand for \d\d? or [0-9][0-9]?)
)
)? # The decimal part is optional
Run Code Online (Sandbox Code Playgroud)
请注意,这不会将点作为匹配组的一部分,这在后处理中可能会更容易。如果没有,您可以删除不匹配的组并将点放在第二个匹配组内。
如果这没有给出您想要的结果,那很可能是您调用正则表达式库的方式的问题。