고정되지 않은 패턴이 있는 정규 표현식

고정되지 않은 패턴이 있는 정규 표현식

다음과 같이 샘플 입력이 포함된 파일과 일치하는 올바른 정규식(파이썬과 호환 가능)을 찾으려고 합니다.

On the third day of Christmas
 my true love sent to me:
 three worms a eating
 two garlic cloves
 and a koala in a bamboo spree

이것은 단지 가능성일 뿐입니다. 중요한 부분은 첫 번째 줄에 "On the X day of Christmas"가 있고 잘못된 대문자 사용(예: ChrISTmas)이 없다는 것입니다.

이렇겠지

\^On the [first|second|third|fourth]... 

12번째까지요. 결말은 똑같고,마지막 줄그냥 "하나 더 있는데..."

 $and a *\         (?)

하지만 정규식을 사용하여 파일의 각 줄이 올바른 순서로 되어 있는지 어떻게 확인할 수 있나요??

예를 들어, "세 개의 벌레" 앞에 "두 개의 마늘..."을 입력하면 올바르지 않습니다.

 On the third day of Christmas
 my true love sent to me:
 two garlic cloves         #SWITCHED
 three worms a eating
 and a koala in a bamboo spree

마찬가지로 점프도 할 수 없습니다. "Five X's"로 시작하는 경우 다음 줄은 "Four Y's," "Three", "Two" 등이어야 합니다.

 On the third day of Christmas
 my true love sent to me:
 five cats a dancing       #Goes from 'five cats' to 'two garlic', not ok
 two garlic cloves
 and a koala in a bamboo spree

다음은 여러 줄의 정규 표현식을 일치시키지 못한 채 시도한 몇 가지 시도입니다.http://www.codeshare.io/jLI9l

다음은 파일 입력을 제거하고 다른 것을 시도한 또 다른 예입니다.http://www.codeshare.io/u4E7t

입력 파일 구조/일치가 정확하면 일치하고 "올바른"을 인쇄하고 싶습니다.

답변1

나에게 정규식은 테스트하는 각 새 줄에 대해 첫 번째 단어의 이전 숫자를 기억할 수 있는 일종의 메모리가 필요하기 때문에 실제로 최선의 접근 방식은 아닙니다.

나는 그것이 수행될 수 없다고 말하는 것이 아닙니다(제한된 숫자 집합을 가지고 있으므로 기술적으로 정말 불쾌한 여러 줄 정규식을 사용하여 가능한 모든 파일 조합을 "수동으로" 열거할 수 있습니다). 내 말은 다음과 같습니다. 실제로 Python 코드를 작성하여 (더 빠르게) 할 수 있을 때 우선적으로 그렇게 하시겠습니까? ["one", ..., "twelve"]모든 숫자와 일을 정렬한 목록 과 같은 것을 갖고 ["first", ..., "twelfth"]파일을 (하나의 큰 파일로) 줄별로 분할한 다음 str( s 목록으로 만들고 str) for해당 목록의 인덱스를 사용하여 줄을 테스트할 수 있습니까? 루프?

관련 정보