如何在python的正则表达式中表示两个字符串之间的逻辑or?

如何在python的正则表达式中表示两个字符串之间的逻辑or?,python,regex,Python,Regex,fi1可以从字符串中得到3.36,为什么fi2和fi3什么也得不到?如何在python中用两个字符串之间表示一个正则表达式,其中有一个逻辑or关系 您可以重新制定第三种方法 import re string="上市以来,向上市公司股东共募集资金 3.36 亿元" fi1=re.search("募集资金(\s*\d*\.\d*\s*)亿元",string).group(1) print(fi1) fi2=re.search("募资共(\s*\d*\.\d*\s*)亿元" or "募集资金(\s*\

fi1
可以从字符串中得到3.36,为什么
fi2
fi3
什么也得不到?如何在python中用两个字符串之间表示一个正则表达式,其中有一个逻辑or关系

您可以重新制定第三种方法

import re
string="上市以来,向上市公司股东共募集资金 3.36 亿元"
fi1=re.search("募集资金(\s*\d*\.\d*\s*)亿元",string).group(1)
print(fi1)
fi2=re.search("募资共(\s*\d*\.\d*\s*)亿元" or "募集资金(\s*\d*\.\d*\s*)亿元",string).group(1)
print(fi2)
fi3=re.search(r"募资共(\s*\d*\.\d*\s*)亿元|募集资金(\s*\d*\.\d*\s*)亿元",string).group(1)
print(fi3)

(?)募资共|募集资金)是一个,因此您的结果总是在
组(1)

fi3
是正确的方法。但是您有两个组,您的值在第二组,而不是您得到的第一组。
fi3=re.search(r)募资共(\s*\d*\.\d*\s*)亿元|募集资金(\s*\d*\.\d*\s*)亿元",组(2)
完成,但我怎么知道是哪个()被搜索?1或2?我可以使我的代码更智能吗?如果不匹配,组1将为空/未定义。在代码中,选择设置的第一个组。只需按照Qtax所说的做,如果有未相似的表达式,只需检查两者,并查看哪一个具有有效的捕获。如果有已编译的表达式,我必须选择组1或组2,如何使我的de smart?re.search(“xx(expression1)| yy(expression2)”,string),您不能将expression1与expression2完全不同的任何内容组合在一起,如何编写正确完整的命令?
re.search(“xx(expression1)| yy(expression2)”,string)。组(i)
,在某些情况下,i是1,在另一种情况下i是2???@it_是_a_文献,在Python中,据我所知,你不能(在Perl中,有一个特殊的组(?|(..)|(.)给备选方案中的组相同的数字)。在Python中,你必须计算结果
匹配对象
,并检查结果是哪个组。
fi3=re.search(r"(?:募资共|募集资金)(\s*\d*\.\d*\s*)亿元",string).group(1)