擅长:python、mysql、java
<p>这比你想象的要简单。<em>“regex字符串”没有什么特别之处:它是一个简单的、基本的、日常的文本字符串。唯一值得注意的是,它通常是用<code>r</code>前缀定义的,因为反斜杠在(不固定的)Python字符串中也意味着一些东西,您不想将它们加倍,而且。。。它按原样输入Python的内部regex模块。你知道吗</p>
<p>所以这根线从哪里来并不重要!任意构造,然后将结果输入<code>re.findall</code>:</p>
<pre><code>def findwords(text, n):
return re.findall(r"\b[a-zA-z]{" +str(n) + r"}\b", text)
>>> findwords(text, 3)
['The', 'fox', 'the', 'dog']
>>> findwords(text, 4)
['over', 'lazy']
</code></pre>
<p>请注意<code>r</code>的重复使用,因为它不是regex特性,而是Python特性,您需要在<em>all</em>前面加上前缀来分隔字符串,以防止反斜杠猖獗地运行并弄乱精心构造的表达式。你知道吗</p>
<p>(此函数的输入也是如此。这也会起作用,除非您测试参数并拒绝非数字:</p>
<pre><code>>>> findwords(text, '5} {1')
['quick ', 'brown ', 'jumps ']
</code></pre>
<p>。。。但我没有。)</p>