Regex 正则表达式匹配数字和数学运算符
我需要一个与以下表达式匹配的正则表达式:Regex 正则表达式匹配数字和数学运算符,regex,Regex,我需要一个与以下表达式匹配的正则表达式: 9+sin(21) cos(Pi) 4+1 4+5*(2-1) 6*(3*5*(3*(7*(7-9)-4)-3)-1) (120-(2*2*(3*(4-4/4*4)-3)-12/2))*cos(6) (-4+1/5*(6+5*2))*9800 正则表达式不能修改字母或标点符号 我的正则表达式不起作用: "([(-?\\d+](.*))||"+ "((sin|cos|tan)\\("+"[\\d\\D]{1,5}"+"\\))"); 这个怎
9+sin(21)
cos(Pi)
4+1
4+5*(2-1)
6*(3*5*(3*(7*(7-9)-4)-3)-1)
(120-(2*2*(3*(4-4/4*4)-3)-12/2))*cos(6)
(-4+1/5*(6+5*2))*9800
正则表达式不能修改字母或标点符号
我的正则表达式不起作用:
"([(-?\\d+](.*))||"+ "((sin|cos|tan)\\("+"[\\d\\D]{1,5}"+"\\))");
这个怎么样,它适用于perl下的所有情况,并且不会匹配字母,除了字符串“cos,sin,tan”和Pi 如果您希望不止一次出现cos/sin/tan,您还可以使用更复杂的方法
((?:(?:[-\d)(+/*]+)?(?:(?:cos|sin|tan)[(](?:\d+?|Pi)[)])?){1,3})
虽然使用后一个表达式,但如果它发生在以cos/sin/tan表达式结尾的字符串之后,则需要至少出现2次,以考虑可能的结束“)”。sin/cos/pi不是数字或运算符。。。即使有一个有效符号的白名单,正则表达式也不可能是做任何事情的正确选择(您没有共享)
*
将匹配所有这些。@AlexK。我已经用我的代码更新了帖子
((?:(?:[-\d)(+/*]+)?(?:(?:cos|sin|tan)[(](?:\d+?|Pi)[)])?){1,3})