如何通过此正则表达式搜索挑战?

时间:2019-04-12 22:49:23

标签: python regex

我无法通过此代码挑战:

  

正则表达式搜索挑战使用下面的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')

我真的没有从程序中得到任何反馈。它只是告诉我我失败了,没有错误消息。

3 个答案:

答案 0 :(得分:2)

如果我运行您的代码,我会得到一条错误消息,告诉我

pattern = ex1 + ex2 + ex3 + ex4

失败,因为不支持添加匹配对象。

挑战可能是试图教您在正则表达式中使用character sets。 基本上,您不需要ex1ex2等。您只需要在pattern变量中定义正则表达式模式并将其提供给re.findall

我还建议使用RegExrregex101之类的工具来测试正则表达式。

答案 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