我需要一个与这个表达式匹配的正则表达式:
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}"+"\\))");
答案 0 :(得分:0)
这个怎么样,它适用于所有你的情况,在perl下,并且不会匹配字母,除了字符串" cos,sin,tan"和Pi。
((?:[-\d)(+/*]+)?(?:(?:cos|sin|tan)[(](?:\d+?|Pi)[)])?(?:[\-\d\)\(\+/*]+)?)
如果你期望有多个cos / sin / tan出现,你也可以选择更复杂的东西。
((?:(?:[-\d)(+/*]+)?(?:(?:cos|sin|tan)[(](?:\d+?|Pi)[)])?){1,3})
虽然使用后者,但是你需要至少2次出现,考虑到可能的关闭")",如果它发生在一个以cos / sin结尾的字符串之后/ tan表达。