re.compile("(?<!\w)Index\s*(((?:[^()]|((?:[^()]|(?R))))))") 这个正则规则为什么不能识别Index(df['f629'].isin((10025,10075))))>0.5 ,我希望他能识别出Index(df['f629'].isin((10025,10075))) ,应该怎么修正
时间: 2023-06-27 09:01:38 浏览: 149
这个正则表达式无法识别类似于 `Index(df['f629'].isin((10025,10075))))>0.5` 这样的字符串,是因为它包含了额外的括号和操作符,使得 `(?:[^()]|((?:[^()]|(?R))))` 中的递归部分无法正确匹配。
要修正这个问题,你可以修改正则表达式,使用非贪婪模式匹配括号内的内容,如下所示:
```
re.compile(r"(?<!\w)Index\s*\((.*?)\)")
```
这个正则表达式会匹配 `Index()` 后面跟着一个括号,括号内包含任意字符(包括换行符),但是是非贪婪匹配,遇到第一个右括号就结束匹配。这样就可以正确匹配类似于 `Index(df['f629'].isin((10025,10075)))` 的字符串了。
阅读全文