<p>您可以使用以下正则表达式:</p>
<pre><code>re.search(r'(?:sow|transplant).+?(\d+)(\'|") apart', info['growing_info'], re.I)
</code></pre>
<p><a href="http://regex101.com/r/wU5nU0" rel="nofollow">regex101 demo</a></p>
<p>我做了一些修改,即:</p>
<ul>
<li>添加了ignorecase标志以便可以使用<code>(?:sow|transplant)</code></li>
<li>删除了<code>(?!rows).+</code>;它没有做任何事情,并将<code>.+</code>更改为<code>.+?</code>以进行延迟匹配。你知道吗</li>
</ul>
<p>如果要绝对避免在匹配的文本中使用<code>rows</code>,请使用以下命令:</p>
<pre><code>re.search(r'(?:sow|transplant)(?:(?!rows).)+(\d+)(\'|") apart', info['growing_info'], re.I)
</code></pre>
<p><code>(?:(?!rows).)</code>将匹配除<code>rows</code>之外的任何字符。你知道吗</p>
<hr/>
<pre><code>.+(?!rows).+
</code></pre>
<p>不起作用,因为<code>(?!rows)</code>没有检查任何<code>.+</code>匹配的每个字符。下面是它的工作原理(粗体部分表示到目前为止匹配的内容):</p>
<ol>
<li><p>正则表达式尝试匹配<code>(?:sow|transplant)</code>并找到它</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <strong>Sow</strong> at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote></li>
<li><p>接下来是<code>.+</code>,这意味着匹配每个字符(贪婪地):</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <strong>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</strong></p>
</blockquote></li>
<li><p>接下来是<code>(?!rows)</code>。regex检查并发现最后没有<code>rows</code>。</p></li>
<li><p>接下来是<code>.+</code>。正则表达式必须回溯1个字符才能允许此匹配:</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <strong>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy</strong>.</p>
</blockquote>
<p>然后将最后一个字符与<code>.+</code>匹配</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <strong>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</strong></p>
</blockquote></li>
<li><p>下一个是<code>(\d+)</code>,所以regex查找一个数字,但找不到。因为它不能回溯到第二个<code>.+</code>,所以它将回溯到第一个<code>.+</code>:</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <strong>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows</strong> 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote></li>
<li><p>检查<code>(?!rows)</code>。一切都很清楚,因为前面没有<code>rows</code>。它将空格与第二个<code>.+</code>匹配,然后将数字与<code>(\d+)</code>匹配,然后将引号匹配。</p></li>
</ol>
<hr/>
<pre><code>(?:(?!rows).)
</code></pre>
<p>下面是它现在的工作原理:</p>
<ol>
<li><p>正则表达式尝试匹配<code>(?:sow|transplant)</code>并找到它</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <strong>Sow</strong> at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote></li>
<li><p>接下来是<code>(?:(?!rows).)</code>,这意味着,匹配一个字符并确保每个字符前面没有<code>rows</code>(假设它与<code>+</code>匹配了两个字符,因为空格不能加粗):</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <b>Sow a</b>t any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote>
<p>因为没有<code>rows</code>,所以继续重复这个组。持续到:</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <b>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep,</b> rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote></li>
<li><p>现在它无法前进,因为前面有<code>rows</code>。因此,它继续处理regex的其他部分:<code>(\d+)</code>。因此,它可以回溯到:</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <b>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/</b>2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote></li>
<li><p>也匹配<code>(\d+)(\'|")</code>。但是,没有<code>apart</code>要匹配,因此继续回溯,直到<code>(\d+)(\'|") apart</code>匹配为止:</p>
<blockquote>
<p>Radishes require friable, well drained soils with a pH range of 5.8-6.8. <b>Sow at any time during the season, beginning in early spring. Use 2-3" wide bands, seeds about 3/4-1" apart</b> (about 35 seeds/ft. except 10 seeds/ft. for 624 Red Meat and 616 Nero Tondo), 1/2" deep, rows 1' apart, or any row or bedding scheme that will eliminate unplanted ground to discourage weeds. Radishes are adversely affected by hot, dry weather. They remain in prime condition only a few days and should be grown rapidly with plenty of moisture to be mild, tender, and attractive. If growth is checked, roots may become tough, pithy, and too spicy.</p>
</blockquote></li>
</ol>