我需要构造一些正则表达式。我遇到以下列出的问题
查找所有以a开头的单词,所有字母均为字母
订购。
我尝试过-^[a]a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*$
但它不起作用。
输入:
查找所有不包含元音和y的单词。
我尝试过-[^aeiouy]+$
但这不起作用
输入:
查找所有以z开头且包含至少2个y的单词。
我尝试过-r"\b[z].*(y.*?){2}\b"
但它不能正常工作。它匹配作品但不打印
正确(我只是从findAll()结果中打印匹配项,什么也没有
其他)
输入:
yses
,但仅打印ysis
查找由交替的元音和辅音组成的所有单词(在
任意顺序)且长度至少为12。
我尝试过-^(([aeiou][^aeiou])+|([^aeiou][aeiou])+)$
但不知道如何测试12个或更多字符的长度。
^(([aeiou][^aeiou])+|([^aeiou][aeiou])+){12,}$
对我不起作用。
输入:
答案 0 :(得分:1)
这是第二个问题的一个例子。您的正则表达式足够好。
import re
def find_word(word):
if re.match("[^aeiouy]+$",word):
print (word, "DOESN'T CONTAIN VOWELS OR Y")
else:
print (word, "CONTAINS VOWELS OR Y")
find_word("abc")
find_word("bc")
find_word("sgpty")
find_word("sgpt")
输出:
abc CONTAINS VOWELS OR Y
bc DOESN'T CONTAIN VOWELS OR Y
sgpty CONTAINS VOWELS OR Y
sgpt DOESN'T CONTAIN VOWELS OR Y
对于第三个问题,我也使用您的正则表达式:
def find_z(string) :
regex = re.compile(r"\b[z].*(y.*?){2}\b")
for st in string.split():
match_object = regex.findall(st)
if len(match_object) != 0 :
for word in match_object :
print(st)
else:
print("Not match")
输出:
zygapophyses
zygapophysis
Not match
Not match