正则表达式匹配小括号时出现的问题?

作者站长头像
站长
· 阅读数 5

正则表达式匹配小括号时出现的问题?

import re
my_sin = re.compile(r'sin\(.+?\)', re.DOTALL)
print(re.findall(my_sin, 'sin(30)'))

trigonometric_functions = re.compile(r'(cos|sin|tan|arcsin|arccos|arctan)\(.+?\)', re.DOTALL)
print(re.findall(trigonometric_functions, 'sin(30)'))

请问这两个函数有什么区别吗?为什么上面的匹配出来有括号,下面的就没了?感觉是 (cos|sin|tan|arcsin|arccos|arctan) 这一部分的问题?

回复
1个回答
avatar
test
2024-07-07

python的findall函数,正则中不含有捕获组时,返回匹配结果的列表含有捕获组时,返回捕获组内容的列表上式的括号可以用非捕获组形式(?:cos|sin|tan|arcsin|arccos|arctan)

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容