使用 Python,我想匹配列表中可能填充特定模式的所有子列表,
例如 :
l = ['dummy', ',', 'as', 'it', 'is', 'an', 'example', '.',
'as', 'we', 'assume', 'it', 'is', '.',
'as', 'to', 'do', 'some', '.']
sublist = ['as', '*', 'it']
和
mySub(l, sublist)
提供 =>[['as', 'it'], ['as', 'we', 'assume', 'it'], ['as', 'it', 'is', 'an', 'example', '.', 'as', 'we', 'assume', 'it']]
或其他示例:
mySub(l, ['as', '*', 'it', '*', 'example'])
提供 =>[['as', 'it', 'is', 'an', 'example'], ]
mySub(l, ['as', '*', 'it', 'is'])
提供 =>[['as', 'it', 'is'], ['as', 'it', 'is', 'an', 'example', '.', 'as', 'we', 'assume', 'it', 'is'], ['as', 'we', 'assume', 'it', 'is']]
实际上我的问题更复杂,因为l
将是列表列表,并且sublist
还必须根据排名匹配其中的某些部分。但这是为了概括我遇到的主要困难,即如何使用 Python 进行这种有效的匹配。(所以用一些简单的正则表达式匹配解决这个问题对我没有帮助)
请注意,'*' 是正则表达式的一个like,意思是我们可能会跳过一些项目。即使不清楚,我也需要拥有所有可能的子列表,这就是为什么有些重复与贪婪的匹配。
如果你们有任何线索/链接/有趣的想法,请
此致
(我记得一些关于与生物信息学/dna 序列匹配的算法,但无法再次找到它)