다음과 같이 샘플 입력이 포함된 파일과 일치하는 올바른 정규식(파이썬과 호환 가능)을 찾으려고 합니다.
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
해당 목록의 인덱스를 사용하여 줄을 테스트할 수 있습니까? 루프?