endswith()匹配?

时间:2017-06-07 02:26:52

标签: python regex python-2.7

我使用下面的代码在Python中使用endswith进行匹配。

while not buff.endswith('/abc #'):

但是当线路结束时我遇到了问题,如下所示:

('console /abc/xyz* #')

('console /abc/xyz/pqrs* #')

现在如何在endswith处与"/abc"匹配,但#必须是最后一个字符?

2 个答案:

答案 0 :(得分:2)

我认为这里存在一个语言障碍,难以理解这些要求,所以我只是根据我的最佳猜测提出一个解决方案:

while not (buff.endswith("#") and "/abc" in buff):

答案 1 :(得分:0)

如果您尝试匹配的路径数量很少,则可以为endswith方法提供元组。

>>> buffs = ["console /abc #", "console /abc/d #", "console /abc/xyz/* #"]
>>> for b in buffs: print(b.endswith("#"))
...
True
True
True
>>> for b in buffs: print(b.endswith("/abc #"))
...
True
False
False
>>> for b in buffs: print(b.endswith(("/abc #", "/abc/d #")))
...
True
True
False
>>>

否则,您需要使用正则表达式进行搜索,例如

>>> import re
>>> p = re.compile(r"/abc.*#$")  # match "/abc", anything, "#", then EoL
>>> for b in buffs: print(p.search(b) != None)
...
True
True
True