在文本文件中查找字符串在python中使用re.match函数

在文本文件中查找字符串在python中使用re.match函数,python,Python,这是到目前为止我的代码。我找不到重新匹配的问题 import os import re folderpath = 'D:/Workspace' typeOfFile = [".c", ".C", ".cpp", ".CPP"] for dirname, dirnames, filenames in os.walk(folderpath): for filename in filenames: if filename.endswith(tuple(typeOfFile)

这是到目前为止我的代码。我找不到重新匹配的问题

import os
import re

folderpath = 'D:/Workspace'
typeOfFile = [".c", ".C", ".cpp", ".CPP"]

for dirname, dirnames, filenames in os.walk(folderpath):
    for filename in filenames:
        if filename.endswith(tuple(typeOfFile)):
            data= open(os.path.join(dirname, filename), "r").readlines()

            m= re.match(r'author*.[^:=]*[:=]*(.[^\n]+)', data, re.DOTALL)

            if m: 
                author = m.group(1)
            else:
                author = 'unknown'
            print "author is this case is:", author, "in file", filename
我想在文本文件中搜索字符串作者。

阅读:

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回 对应的MatchObject实例


改为使用。

使用搜索而不是匹配r'author*[^:=]*[:=]*.[^\n]+'我想这里的问题是您试图匹配的文本是什么样子的?那个正则表达式真的很奇怪。。。r*-你真的想匹配任意数量的r,后跟一个字符吗?你不是在使用正则表达式。if filename.endswithtupletypeOfFile仅在文件名以.c.c.cpp.cpp结尾时为true。请尝试类似于if os.path.splitextfilename[1]。在“.c”和“.cpp”中放低一点。@tdelaney:为什么不呢?OP还需要.read来获得一个大字符串,而不是.readlines。我感觉到,在question@JonClements-他还没有进入if声明-下一个例外!
re.match(pattern, string, flags=0)