在正则表达式python中找到一行以“ - ”结尾

时间:2013-11-15 03:23:29

标签: python regex

我正在尝试在文本文件中找到以“ - ”结尾的行。我使用了以下表达式但没有工作。我不熟悉正则表达式。有人能帮我吗?谢谢!

if re.match(r'[.*+]+\-+[\r\n]', lines[i]):
    return i

3 个答案:

答案 0 :(得分:5)

仅当

re.match从字符串的开头找到匹配项时,它才会匹配该字符串。如果您确实想使用re.match,可以使用以下正则表达式

if re.match(r'.*-$', lines[i].rstrip("\n")):
    return i

但是你根本不需要正则表达式,你可以做这样的事情

for i, line in enumerate(lines):
    if line.rstrip("\n")[-1] == "-":
       return i 

答案 1 :(得分:2)

这看起来似乎不是一个你需要正则表达式的任务,但下面的表达式会做到这一点。

.*-$

Regular expression visualization

.*会将所有字符“零或多次”与$匹配,并指定-必须紧跟字符串的结尾。

修改

如果您设置标记以设置^$以匹配换行符,则会执行此操作。我不建议明确匹配换行符(在您的情况下为'\ r \ n'),因为这些取决于您的环境。

默认情况下,.*与新线不匹配。

答案 2 :(得分:0)

我认为re.search应该更简单

if re.search(r'-$', lines[i]):
    return i