python – 检查String是否是列表中元素的串联
发布时间:2020-12-20 11:47:29 所属栏目:Python 来源:网络整理
导读:是否有一种优雅的方式(最好是 pythonic)来检查String s是否是一组L的子集的元素串联? L的元素可能在s中出现不止一次. 例如: L = set(["a","ab","c","e"]) 然后“abac”是L的子集的元素的有效串联 “aaaaaaa”也是一种有效的连接. 但“广告”不是因为“d”
是否有一种优雅的方式(最好是
pythonic)来检查String s是否是一组L的子集的元素串联? L的元素可能在s中出现不止一次.
例如: L = set(["a","ab","c","e"]) 然后“abac”是L的子集的元素的有效串联 “aaaaaaa”也是一种有效的连接. 但“广告”不是因为“d”不在L. 解决方法import re L = ["no","force","in","the","verse","can","stop","me"] # make this: "(?:no|force|in|the|verse|can|stop|me)*$" r = re.compile( "(?:" + "|".join(L) + ")*$") r.match("shiny") # -> None r.match("canme") # -> not None 这适用于给定的字符串集. re库中有一个函数引用字符串(转义| etc),以便您可以在运行时安全地创建这样的表达式. r = re.compile( "(?:" + "|".join( re.escape(s) for s in L) + ")*$" ) 无论子串出现多少次,它都会匹配;如果某些字符串是其他字符串的前缀,则可能会出现奇怪的结果,等等.它可能有令人讨厌的运行时.如果所有字符串在开头都很容易区分,那就不应该. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |