首页 > 解决方案 > 如何提取此表达式中使用的负/正浮点/整数和数学符号?

问题描述

我有以下形式的不同字符串:

"-33.3*-50" 

"3+5"

"-109.51+-33"

我希望有以下输出:


"-33.3", "*", "-50"

"3", "+", "5"

"-109.51", "+", "-33"

标签: regex

解决方案


如果您只有 格式x (math symbol) y,则以下正则表达式将起作用:

(-?\d+(?:\.\d+)?)(\*|\+|\-|\/|\%)(-?\d+(?:\.\d+)?)

正则表达式演示

(                  # Group 1
  -?                 # Match if - symbol present
  \d+                # Match digits
  (?:\.\d+)?         # Non-capturing group - match if contains float part
)                  # Close Group 1
(                  # Group 2
  \*|\+|\-|\/|\%     # Match math symbols *,+,-,/,%, separated using | -> or. Add others as needed.
)                  # Close Group 2
(-?\d+(?:\.\d+)?)  # Group 3 structure is same as Group 1 above.

等式的每个单独部分都在一个单独的组中。例如-33.3,在第 1组中*捕获,在第 2 组-50捕获,在第 3 组中捕获。

然后,您可以替换"$1", "$2", "$3"为以获得您想要的结果(请参阅正则表达式演示页面的底部)。


推荐阅读