如何应用正则表达式从动态字符串中获取数字

How to apply regular expressions to get a number from a dynamic string

我有一个可以包含一些变化的变量,它还包含一个可以是任何数字的数字。

变体:

($stuksprijs+9.075);
($stuksprijs-9.075);
($stuksprijs*9.075);

($m2+9.075);
($m2-9.075);
($m2*9.075);

($o+9.075);
($o-9.075);
($o*9.075);

除了其中的数字,这些是唯一的变化,它们可以改变。我需要那个号码。

所以可以有:

($m2+5);

($o+8.25);

($stuksprijs*3);

我怎样才能从这些变体中得到数字?如何使用正则表达式从上面的示例中获取 9.075 或 5 或 8.25 或 3?

我正在尝试使用 PHP 解决此问题,我的包含字符串的变量是:$explodeberekening[1]

我阅读了多个正则表达式教程,并使其适用于一个永不改变的字符串,但我如何编写一个正则表达式来从上述变体中获取数字?

根据我的评论,似乎有效,您可以尝试:

^\($(?:stuksprijs|m2|o)[+*-](\d+(?:\.\d+)?)\);$

该号码在第一个捕获组中被捕获。看网上demo.

快速细分:

  • ^ - 开始字符串锚点。
  • \($ - 字面匹配“($”.
  • (?: - 打开一个非捕获组列表交替:
    • stuksprijs|m2|o - 匹配这些文字选项之一。
    • ) - 关闭非捕获组。
  • [+*-] - 匹配字符中的一个符号-class.
  • ( - 打开第一个捕获组:
    • \d+ - 1+ 位数。
    • (?:\.\d+)? - 额外可选的非捕获组匹配文字点和 1+ 数字。
    • ) - 关闭第一个捕获组。
  • \); - 字面匹配 ");".
  • $ - 结束字符串锚点。