擅长:python、mysql、java
<p>按以下方式定义函数:</p>
<pre><code>def findWordandCode(w1, w2, sentence):
m = re.search(r'\b{0}\s{1},\s'
'(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])\S{{8,32}}(?=[\s|$])'\
.format(w1, w2), sentence)
return m.group() if m else ''
</code></pre>
<p>让我们从正则表达式开始描述:</p>
<ol>
<li>在<em>word1</em>(<code>{0}</code>)和<em>word2</em>(<code>{1}</code>)之间应该有一个空格,
或者是一个空格序列(<code>\s+</code>)。你知道吗</li>
<li>单词2后面必须有逗号和空格(<code>,\s</code>)。你知道吗</li>
<li>那么每个正向前瞻应该在开头有<code>\S*</code>
是<code>.*</code>。有了一个圆点,这样的展望可以进入下一个词,但你
实际上应该在当前单词内检查。你知道吗</li>
<li>在所有3个查找头之后,对于数字、小写字母和大写字母,
第三个单词应该有匹配的部分-在8到32之间
非空间字符。你知道吗</li>
<li>最后,为了避免较长的单词,应该有另一个
对空格或字符串结尾的正向展望。你知道吗</li>
</ol>
<p>现在就整个功能而言:</p>
<ol>
<li>从<em>开始检索</em>,但请记住,如果没有匹配,
结果是<em>无</em>。你知道吗</li>
<li>然后,如果找到匹配项,则返回它(<code>m.group()</code>)。你知道吗</li>
<li>如果不是,则返回空字符串(或选择另一个“failed”值,
e、 g.<em>无</em>)。你知道吗</li>
</ol>