在创建正则表达式时面临挑战

2024-03-29 12:02:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要构造一些正则表达式。我面临下列问题

  1. 查找所有字母都按字母顺序排列的以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*$ 但它不起作用。你知道吗

    输入:

    • ab-不匹配
  2. 查找所有不包含元音和y的单词。 我试过-[^aeiouy]+$ 但它不起作用

    输入:

    • abc-不匹配
    • bc-匹配
    • 中士-不匹配
    • sgpt-匹配
  3. 找到所有以z开头且至少包含2个y的单词。 我试过-r"\b[z].*(y.*?){2}\b" 但它不能正常工作。它与作品匹配,但不打印 正确(我只是打印findAll()结果的匹配,没有任何结果) 其他)

    输入:

    • zygapophyses-匹配但仅打印yses
    • 关节突-匹配但仅打印ysis
  4. 找出所有由交替的元音和辅音组成的单词(在 任何一个顺序)并且长度至少为12。 我试过-^(([aeiou][^aeiou])+|([^aeiou][aeiou])+)$ 但不知道如何测试12个或更多字符的长度。你知道吗

    ^(([aeiou][^aeiou])+|([^aeiou][aeiou])+){12,}$不适合我。你知道吗

    输入:

    • witenagemote-匹配
    • 谩骂-匹配
    • 维齐拉特-不匹配
    • 逼真度-匹配

Tags: 命令ab字母单词作品abcbc元音
1条回答
网友
1楼 · 发布于 2024-03-29 12:02:24

这是第二个问题的一个例子。你的正则表达式足够好了。你知道吗

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

相关问题 更多 >