如何用python编写一个在字符串的第一个句点处停止的正则表达式,该字符串具有不可预测的字符类型?

如何用python编写一个在字符串的第一个句点处停止的正则表达式,该字符串具有不可预测的字符类型?,python,regex,Python,Regex,我有几百万个这样的方程:一个方程:a(%)^+b#=(+)C 我想要返回的是:a(%)^+b#=(+)C 方程中永远正确的事情: 1.它将以“方程式”开头: 2.它将在两个空格之间包含一个等号(=)。 3.它将在两个空格之间包含任意数量的加号(+)。 4.它将以句号(.)结束 可能是真的事情: 1.方程式可以包含额外的+和=,但不能用空格表示。 2.方程式可以包含周期后的附加信息,该信息可能包含一个周期。例如: an equation: a(%)^ + b# = (+)C!. An annota

我有几百万个这样的方程:
一个方程:a(%)^+b#=(+)C

我想要返回的是:
a(%)^+b#=(+)C

方程中永远正确的事情:
1.它将以“方程式”开头:
2.它将在两个空格之间包含一个等号(=)。
3.它将在两个空格之间包含任意数量的加号(+)。
4.它将以句号(.)结束

可能是真的事情:
1.方程式可以包含额外的+和=,但不能用空格表示。
2.方程式可以包含周期后的附加信息,该信息可能包含一个周期。例如:

an equation: a(%)^ + b# = (+)C!. An annotation about the (!!*) equation.  
三,。我想等式中可能有周期。我对此表示怀疑,我认为如果它们真的发生,它们将出现在等号(左侧)之前。
4.这个等式可能不存在。字符串永远不会为空,但它可能不包含等式(即,具有四个始终为真的条件)

以下是我到目前为止的情况:

e = "an equation: a(%)^ + b# = (+)C!. An annotation about the (!!*) equation."
rx = re.search(r'(?<=an equation:\s)(.*=.*)\.?',e)
print rx.group(0)
我认为问题出在正则表达式的贪婪性上。我尝试了许多其他组合,包括
\
[]
以及
)和
。它们都返回如上所述的关于注释的第二条语句或
NoneType
(即不匹配)。在第一节课后,我完全不知道如何停止


提前感谢您的帮助。我花了两天时间在这个网站上,并使用Python文档尝试解决这个问题。我只是无法找到/理解我需要什么

正则表达式的贪婪本质确实是个问题。请尝试以下方法:


rx=re.search(r'(?不会
(*))\.
work?每一行都是一行吗?这些方程是以什么形式组合在一起的。你能不能不把每行的子串加上12个字符,直到最后一个字符?@supersew我相信这会在最后一个周期停止,你需要使它不贪婪。@supersew-我尝试了你建议的
rx=re.search(r'(?为了在下一节课上停下来,试着用
[^\.]+\.
不错,正则表达式谜题总是很有趣,用一种奇怪的“我喜欢折磨自己”的方式谢谢你。这是一个很棒的工具。我在这里看到了很多屏幕截图,因为我在寻找答案,但我没有像我应该的那样去探索它。我还看到我可以
(?=\)
省略等式后面的周期。
a(%)^ + b# = (+)C!. An annotation about the (!!*) equation.