python正则表达式模块

python正则表达式模块,python,regex,Python,Regex,我必须逐行阅读文本文件,并提取每行的部分内容。我有一个工作代码,如果我正在阅读的行是在预期的格式,但这并不总是如此。文件中有错误,即缺少一些信息或字符。所以我想跳过这些故障线路。为此,我想利用正则表达式模块。我定义了我需要的正则表达式。比如说,reg\u exp\u string将与我读取的行匹配。我想要一个完整的匹配,我不想烧焦文本的某些部分。如果是完全匹配,则返回true,否则返回false。我的想法是,我尝试了re.match(),它返回了一个对象。我想不出来。正确的使用方法是什么?如果字

我必须逐行阅读文本文件,并提取每行的部分内容。我有一个工作代码,如果我正在阅读的行是在预期的格式,但这并不总是如此。文件中有错误,即缺少一些信息或字符。所以我想跳过这些故障线路。为此,我想利用
正则表达式
模块。我定义了我需要的正则表达式。比如说,
reg\u exp\u string
将与我读取的行匹配。我想要一个完整的匹配,我不想烧焦文本的某些部分。如果是完全匹配,则返回true,否则返回false。我的想法是,我尝试了
re.match()
,它返回了一个对象。我想不出来。正确的使用方法是什么?如果字符串的某些部分与正则表达式匹配,它总是返回一个对象。我只想要一个完全匹配,然后得到一个布尔答案。如何执行此操作?

匹配对象的文档是。

re.match()
应返回匹配对象,除非没有匹配,否则在这种情况下,它将返回
None

如中所述,如果找到匹配项,则match()将返回MatchObject,否则将不返回

所以,简单地说:

for line in ... :
    m = your_regexp.match(line)
    if m:
        process(line)
如中所述,
$
匹配字符串的结尾。您可以修改正则表达式以在末尾包含
$
。例如:

match_this = "abc12a" #expression you would like to match
dont_match_this = "abc12a9" #expression that returns partial matches from re.match
旧的正则表达式将同时匹配
match\u this
dont\u match\u this

old_reg_expr = "[a-z]+\d[a-z]+"
新正则表达式包含
$
,并且仅当字符串在表达式中匹配的最后一个元素之后结束时才返回匹配项:

new_reg_expr = "[a-z]+\d[a-z]+$"
或者,您可以保留旧的正则表达式,只需检查匹配的结束位置是否等于字符串的结尾:

>>> m = re.match("[a-z]+\d[a-z]+", "abc12a9")
>>> m.end() == m.endpos
False

正则表达式教程/如何阅读文档?这个问题完全没有显示OP方面的研究工作。我没有研究任何东西,我只是问一个问题。请参阅Joel提供的链接-它将显示一些关于发布问题的期望。如果一开始匹配,它将返回一个对象,但是,我需要的是全文匹配。@gokhan_ufl:您可以检查是否匹配.end()==match.endpos以确保匹配的是整个字符串。谢谢。这就是我要找的。事实上,答案比“阅读此文档”的帖子要短。这真的很有帮助。我想这是关键因素。帮助他人。如果您需要它匹配整行,请将您的regexp锚定,例如
^这匹配整行$
。另外,如果您不希望默认情况下将其锚定到行的开头,请使用
search()
而不是
match()
。如果能够提供对否决票的解释,我将不胜感激。