正则表达式的行为不符合预期

时间:2012-10-24 22:57:40

标签: python html regex

我有以下函数,该函数应该读取.html文件并搜索<input>标记,并将<input type='hidden'>标记注入到要显示在页面中的字符串中。 但是,这个条件永远不会满足:(例如if语句永远不会被执行。)我的正则表达式出了什么问题?

 def print_choose( params, name ):

   filename = path + name
   f = open( filename, 'r' )
   records = f.readlines()
   print "Content-Type: text/html"
   print
   page = ""
   flag = True
   for record in records:
        if re.match( '<input*', str(record) ) != None:
            print record
            page += record
            page += "<input type='hidden' name='pagename' value='psychology' />"
        else:
            page += record

   print page

谢谢

2 个答案:

答案 0 :(得分:5)

re.match从字符串中的第一个字符开始。您确定不想要re.search,它可以匹配字符串中间的模式吗?

答案 1 :(得分:3)

   if re.match( '<input*', str(record) ) != None:

你可能想要<input.*。现在,您将匹配<inputttttttttt但不匹配<input>blahblah.表示任何字符,*表示0或与正则表达式中的最后一项匹配,因此.*要求在0或更多字符上重复进行通配符匹配。

(PS签出regexpal进行正则表达式调试)