我可以设法使用此^[a-z]{4}$
从a-z获取四个字母的单词但是我不知道如何得到它所以这个单词中有a和e。我试过这个,但它最终只能通过ae获得世界。 ^[a-z]{2}[a][e]$
import re
import sys
import time
pattern = '^[a-z]{4}$[a][e]'
#c = ^[^a][a]{2}
regexp = re.compile(pattern)
inFile = open('words.txt','r')
outFile = open('exercise04.log','w')
for line in inFile:
match = regexp.search(line)
if match:
time.sleep(0.1)
print(line)
outFile.write(line)
inFile.close()
outFile.close()
^[a-z]{2}[a][e]$
alae
blae
brae
frae
spae
thae
twae
我正在寻找随机词,例如
akes
aejs
soae
skea
esao
答案 0 :(得分:5)
您需要使用前瞻来检查包含a
和e
^(?=.*?a)(?=.*?e)[a-z]{4}$
<强>解释强>
^
开始一行。(?=.*?a)
正向前瞻断言,该特定行中必须有一个字母a
。(?=.*?e)
正向前瞻断言在该特定行中必须有一个字母e
。 Lookarounds通常不匹配任何字符,但它只断言匹配是否可能。[a-z]{4}
正好是四个小写字母。$
行锚点结束。答案 1 :(得分:1)
如果问题是:&#34;查找正好四个字母的单词,其中至少有一个a
和至少一个e
,按任意顺序排列&#34;,一个(比regexp更快,可能)这样做的方法就是提出这三个问题。
我的Python,嗯,几乎不存在,但是:
if 4 == word.length and "a" in word and "e" in word:
似乎比正则表达式更难理解。
答案 2 :(得分:0)
原始正则表达式的一些问题&#39; [a-z] {4} $ [a] [e]&#39;
如果你只想在最后匹配ae,你只需使用[a-z]{2}ae
进行字符串 - 文字匹配。
我通常使用单词边界而不是^和$作为行的开头和结尾,因为单词可能在其前面有空格。将其与积极前瞻相结合,以便&#39; ae&#39;
\b(?=.*?ae)[a-z]{4}\b