Python正则表达式匹配

2024-04-20 02:43:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试匹配文件中的文本

In [44]: with open(path) as f:
   ....:     for line in f:
   ....:         matched = re.search('^PARTITION BY HASH',line)
   ....:         if matched is not None:
   ....:             print matched.group()
   ....:

该文件包含以下行 散列分区(某件事); 还有一些其他的线路 按哈希(一些不应该匹配的事物)进行的子分区

比赛结束后我想删除那一行。 但是指纹呢匹配的.group失败为什么?在


Tags: 文件pathin文本reforsearchas
2条回答

像这样:

In [29]: strs1="PARTITION BY HASH(SOME_THING)"

In [30]: strs2="SUBPARTITION BY HASH(SOME_THING)"

In [31]: bool(re.match(r"^PARTITION BY HASH",strs1))
Out[31]: True

In [32]: bool(re.match(r"^PARTITION BY HASH",strs2))
Out[32]: False

But the print matched.group fails

好吧,它只是做它应该做的事情:它返回匹配。在这种情况下

>>> import re
>>> line = "PARTITION BY HASH(something)"
>>> re.search('^PARTITION BY HASH', line).group()
'PARTITION BY HASH'

如果要根据Ashwini Chaudhary的建议打印以'PARTITION BY HASH'开头的行:

^{pr2}$

请注意逗号,以防止打印插入额外的行尾字符。在

如果您坚持使用包re

import re

with open(path) as f:
    for line in f:
        if re.match('PARTITION BY HASH', line):
            print line,

请注意没有起始位置指示器re.match的用法^(有关详细信息,请参见http://docs.python.org/2/library/re.html#search-vs-match

相关问题 更多 >