我无法通过此代码挑战:
正则表达式搜索挑战使用下面的Python字符串 使用您创建的正则表达式执行搜索。
search_string =’’’这是一个用于搜索正则表达式的字符串 例如正则表达式或正则表达式或regular:expression或 常规&表达式’’
编写一个正则表达式,查找所有出现的情况: 正则表达式b。正则表达式c。常规:表达d。 search_string中的常规&表达式
将正则表达式分配给名为pattern的变量
使用re包中的findall()方法确定是否存在 在search_string中出现
将findall()方法的结果分配给一个名为match1的变量
如果match1不为None:将用来打印的图案打印到控制台 进行比赛,然后加上“ matched”一词
否则:在控制台上打印用于执行 匹配,然后加上“不匹配”字样
这是我的代码:
import re
#The string to search for the regular expression occurrence (This is provided to the student)
search_string = '''This is a string to search for a regular expression like regular expression or
regular-expression or regular:expression or regular&expression'''
#1. Write a regular expression that will find all occurrences of:
# a. regular expression
# b. regular-expression
# c. regular:expression
# d. regular&expression
# in search_string
#2. Assign the regular expression to a variable named pattern
ex1 = re.search('regular expression', search_string)
ex2 = re.search('regular-expression', search_string)
ex3 = re.search('regular:expression', search_string)
ex4 = re.search('regular&expression', search_string)
pattern = ex1 + ex2 + ex3 + ex4
#1. Using the findall() method from the re package determine if there are occurrences in search_string
#. Assign the outcome of the findall() method to a variable called match1
#2. If match1 is not None:
# a. Print to the console the pattern used to perform the match, followed by the word 'matched'
#3. Otherwise:
# a. Print to the console the pattern used to perform the match, followed by the words 'did not match'
match1 = re.findall(pattern, search_string)
if match1 != None:
print(pattern + 'matched')
else:
print(pattern + 'did not match')
我真的没有从程序中得到任何反馈。它只是告诉我我失败了,没有错误消息。
答案 0 :(得分:2)
如果我运行您的代码,我会得到一条错误消息,告诉我
pattern = ex1 + ex2 + ex3 + ex4
失败,因为不支持添加匹配对象。
挑战可能是试图教您在正则表达式中使用character sets。
基本上,您不需要ex1
,ex2
等。您只需要在pattern
变量中定义正则表达式模式并将其提供给re.findall
。
答案 1 :(得分:1)
嘿,我知道这有点晚了,但是我目前正面临着同样的挑战,所以我认为我将帮助如何通过检查点。
因此,“ tfw”在使用字符集时绝对正确。实际上,对于所有...来说,只有一行代码。
#1. Write a regular expression that will find all occurrences of:
# a. regular expression
# b. regular-expression
# c. regular:expression
# d. regular&expression
# in search_string
#2. Assign the regular expression to a variable named pattern
因此,基本上,最简单的方法是通过为每个字符集指定表达式。所以看起来像这样...
pattern = "regular[ -:&]expression"
这样做可以让我们在称为pattern的同一变量中添加空格,-、:和&。现在您的第二部分...
#1. Using the findall() method from the re package determine if there are occurrences in search_string
#. Assign the outcome of the findall() method to a variable called match1
#2. If match1 is not None:
# a. Print to the console the pattern used to perform the match, followed by the word 'matched'
#3. Otherwise:
# a. Print to the console the pattern used to perform the match, followed by the words 'did not match'
您已经有了正确的代码,只需要正确的正则表达式即可调用。但是我会发布它,以免造成混乱。
match1 = re.findall(pattern, search_string)
if match1 != None:
print(pattern + 'matched')
else:
print(pattern + 'did not match')
无论如何,希望这对需要向正确方向稍加推动的其他人有所帮助。我总是发现查看代码在做什么很容易,而不是告诉代码在没有什么方向的情况下应该如何:D
答案 2 :(得分:-1)
将表达式更改为pattern = regular[ -:&]expression