Joe*_*ett 5 python string algorithm pattern-matching string-matching
我正在寻找一种匹配2个列表的有效方法,一个包含完整信息,另一个包含通配符.我已经能够使用固定长度的通配符来做到这一点,但我现在正尝试使用可变长度的通配符.
从而:
match( ['A', 'B', '*', 'D'], ['A', 'B', 'C', 'C', 'C', 'D'] )
Run Code Online (Sandbox Code Playgroud)
只要所有元素在两个列表中的顺序相同,它就会返回True.
我正在使用对象列表,但为了简单起见,使用了上面的字符串.
[编辑以证明在比较对象的OP评论后没有RE]
\n\n看来您没有使用字符串,而是比较对象。因此,我给出了一个显式算法 \xe2\x80\x94 正则表达式为字符串提供了一个很好的解决方案,不要误会我的意思,但是从你对问题的评论来看,这似乎是一个显式的、简单的算法可能会让你的事情变得更容易。
\n\n事实证明,这个问题可以用比之前的答案简单得多的算法来解决:
\n\ndef matcher (l1, l2):\n if (l1 == []):\n return (l2 == [] or l2 == [\'*\'])\n if (l2 == [] or l2[0] == \'*\'):\n return matcher(l2, l1)\n if (l1[0] == \'*\'):\n return (matcher(l1, l2[1:]) or matcher(l1[1:], l2))\n if (l1[0] == l2[0]):\n return matcher(l1[1:], l2[1:])\n else:\n return False\n
Run Code Online (Sandbox Code Playgroud)\n\n关键思想是,当您遇到通配符时,您可以探索两个选项:
\n\n 归档时间: |
|
查看次数: |
1362 次 |
最近记录: |