我使用下面的代码在Python中使用endswith
进行匹配。
while not buff.endswith('/abc #'):
但是当线路结束时我遇到了问题,如下所示:
('console /abc/xyz* #')
('console /abc/xyz/pqrs* #')
现在如何在endswith
处与"/abc"
匹配,但#
必须是最后一个字符?
答案 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