일종의 정렬 ... 그러나 일치시킬 패턴을 설명하는 방법이 필요하며 이는 단지 문자열을 사용할 수도 있습니다.
다음은 일반 표현식을 사용하여 쿼리 할 수있는 일반 Action
및 ActionList
을 사용하는 방법의 실제적인 예입니다.
import re
class Action(object):
def __str__(self):
return self.re
class Jump(Action):
re = "J"
class Run(Action):
re = "R"
class ActionList(list):
def __init__(self, *args):
super(ActionList, self).__init__(self)
for i in args:
self.append(i)
def re_search(self,regex):
s = "".join(str(i) for i in self)
return re.search(regex,s)
al = ActionList(Jump(),Run(),Jump(),Jump())
그런 전화 :
type(al[al.re_search("JJ").pos])
3에있는 요소를 제공합니다
이
<class '__main__.Jump'>
동안 :
al.re_search("R.R")
아무것도 제공하지 않습니다.
는 유스 케이스 무엇입니까? 당신이 당신의 객체에 대해 "문자열로"메소드를 가지고 있지 않다면 나에게 이해가되지 않을 것입니다 ... – HamZa
@HamZa _ "사용 사례는 무엇입니까?"_ : 예를 들어 이벤트 목록에서 패턴 탐지. –
@HamZa 현재, 나는 키 누름의 순서 (vim-style, 하나의 동작에 매핑 된 많은 키 시퀀스가있을 수 있으며,'12ab'는'ab' 명령을 수행합니다. 시간 등). – wrwt