text = u'''$\frac{$\frac{1}{2}$}{$sqrt[]{2}$}$,
$\frac{$\frac{1}{2}$}{$sqrt[]{2}$}$,
$\frac{$\frac{1}{2}$}{$sqrt[]{2}$}$,
$\frac{$\frac{1}{2}$}{$sqrt[]{2}$}$,
$\frac{$\frac{1}{2}$}{$sqrt[]{2}$}$,'''
#如何提取出$\frac{$\frac{1}{2}$}{$sqrt[]{2}$}$两端$包含的字符串,目标是提取出5组字符串
#用pattern = re.compile(r'\\frac{.*?}{(.*?)}', re.S)不能正确提取出想要的数据
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
题主真是,问问题不一步问到位
答案如下:
输出
这个看你具体业务了,如果按照你上面的text和原来的正则表达式的话,正则改成'\\frac{.*}'应该就能完成,如果是要捕捉两个$符号之间的 '\$(.*)\$'的子捕获应该就是结果.
你原来的表达式因为加了'?',变成非贪婪,第一个'{.*?}'捕捉的是{$\frac{1},第二个捕捉的是{2},所以没有提取正确数据
问题似乎换成多行的了,不过一样,看你的正则配置'.'是匹配非换行符的,则不变,如果'.'是匹配包括换行符的,那就换成'\${\S*}\$'