我想编写一个正则表达式,可以从一串数字和算术运算符中选择数字,我能够实现这一点。虽然,我想扩展程序的功能以在开始时匹配采用这种格式的数字:+32
。
这是初始正则表达式:
([\d.A-Z√\s]+)|([-+x÷])
。
这就是我所取得的成就:
([+]?[\d.A-Z√\s]+)([-+x÷])
答案 0 :(得分:1)
让我们考虑您的示例+123+45+67
和初始正则表达式([\d.A-Z√\s]+)|([-+x÷])
。
通过添加(?:^[-+]|)
组,您可以在首个匹配项(demo)中加入前+
和-
个字符:
((?:^[-+]|)[\d.A-Z√\s]+)|([-+x÷])
该正则表达式将匹配:
+123
+
45
+
67
如果您还需要捕获第一个数字而没有前导+
,-
字符,那么我将使用另一组来避免匹配重叠的问题(demo)
((?:^[-+]|)([\d.A-Z√\s]+))|([-+x÷])
此正则表达式捕获:
match group1 group2 group3
+123 +123 123
+ +
45 45 45
+ +
67 67 67
答案 1 :(得分:0)
您是否忘记了酒吧?
((?? \ A +)?[\d.A-Z√\ s] +)|([-+ x÷])
将+视为第二个“运算符”组的一部分,除非在字符串开头,(或[。