<p>这叫做<a href="https://docs.python.org/3/library/re.html" rel="nofollow noreferrer">regular expressions</a>:</p>
<pre><code>import re
string = 'value is between 5 and 10'
m = re.match(r'value is between (.*) and (.*)', string)
print(m.group(1), m.group(2))
</code></pre>
<p>输出:</p>
<pre><code>5 10
</code></pre>
<hr/>
<p><em>更新1。</em>可以将名称指定给组:</p>
<pre><code>m = re.match(r'value is between (?P<min>.*) and (?P<max>.*)', string)
print(m.group('min'), m.group('max'))
</code></pre>
<p>但是这个特性并不经常被使用,因为在一个更重要的方面通常会有足够的问题:如何准确地捕获您想要的内容(在这个并不重要的特殊情况下,但即使在这里:如果字符串是<code>value is between 1 and 2 and 3</code>——应该接受字符串,以及<code>min</code>和<code>max</code>)是什么。</p>
<hr/>
<p><em>更新2。</em>与生成精确的正则表达式相比,有时更容易组合正则表达式和“正则”代码,如下所示:</p>
<pre><code>m = re.match(r'value is between (?P<min>.*) and (?P<max>.*)', string)
try:
value_min = float(m.group('min'))
value_max = float(m.group('max'))
except (AttributeError, ValueError): # no match or failed conversion
value_min = None
value_max = None
</code></pre>
<p>当您的文本由多个要处理的块(如不同类型的引号中的短语)组成时,这种组合方法尤其值得记住:在复杂的情况下,定义单个regex来处理块的分隔符和内容比定义几个步骤(如<code>text.split()</code>)、可选的块合并和独立的处理每个块(使用正则表达式和其他方法)。</p>