rulex = ['(sin+\*\*\(\d\)*\d*x+\*\*\(\d\)*)'] 为啥不能匹配呢?

新手上路,请多包涵
python 
s = '{(-2x)sin3x}'
rulex =  ['(sin+\d*x+)']
正则能匹配成功

s = '{(-2x)sin**(3)3x**(3)}'
rulex =  ['(sin+\*\*\(\d\)*\d*x+\*\*\(\d\)*)']
正则也能匹配成功

s = '{(-2x)sin3x}'
rulex =  ['(sin+\*\*\(\d\)*\d*x+\*\*\(\d\)*)']
为啥不能匹配呢

\*\*\(\d\)*这个作为一个整体是可能出现零次或者N次的.

我是哪里理解错了呢?
s = '{(-2x)sin3x}'
s = '{(-2x)sin**(3)3x**(3)}' 目的的是希望一个正则能同时匹配以上2个字符串
阅读 1k
1 个回答

觉得有很多问题,你前面的都可能有错的。

s = '{(-2x)sin3x}'
rulex =  ['(sin+\d*x+)']

['(sin+\d*x+)']是匹配 sin3xsinnx,sinnn3x 之类,里面的第一个+是修饰n的。你想修饰sin需要 (sin)+
此外里面的(是需要转义的。
你可以试一下:
['\((sin)+(\*\*\(\d+\))?\d*x+(\*\*\(\d+\))?\)']

估计你对规则式中组的概念还有混淆。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题