regex - 如何提取此表达式中使用的负/正浮点/整数和数学符号?
问题描述
我有以下形式的不同字符串:
"-33.3*-50"
"3+5"
"-109.51+-33"
我希望有以下输出:
"-33.3", "*", "-50"
"3", "+", "5"
"-109.51", "+", "-33"
解决方案
如果您只有 格式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"
为以获得您想要的结果(请参阅正则表达式演示页面的底部)。
推荐阅读
- php - SonataAdmin 自定义数据网格过滤器模板
- python - 在 Python 中使用 Lambda 过滤数据框
- php - PHP 无法连接到 SQL Server 2016
- reactjs - React Bootstrap 选项卡一次显示所有内容
- c++ - #include 的问题
在 MacOS 上 - excel - 数据透视表过滤器没有数据 VBA
- python - 如何计算两个 Pandas DataFrame 列之间的 Levenshtein 距离?
- javascript - 使用 v-model 时的错误导致每次击键后取消选择输入字段
- javascript - 在哪里放置函数道具的事件处理程序在反应中
- c++ - 函数指针 c++