예기치 않은 대한 파싱 동작 :디버그 대한 파싱 코드를하는 동안 나는이 예기치 않은 동작이 가로 질러
string1 = "this is a test string : that behaves as I expect\n"
string2 = "this string does not behave as I expect\n"
field = CharsNotIn(":\n")
line = field + ZeroOrMore(Literal(":") + field) + LineEnd()
print line.parseString(string1)
print line.parseString(string2)
이 다음과 같은 출력이 생성 파서가 픽업 할 수있는 몇 가지 이유를 들어
['this is a test string ', ':', ' that behaves as I expect', '\n']
['this string does not behave as I expect']
을 끝 줄 문자는 string1
입니다. 그러나 string2
에서 가져올 수 없습니다. 심지어 라인의 끝을 집어하지 않은 경우 string2
에 대한 일치를 생성 할 수있는 방법을 이해할 수 없습니다.
string1 = "this is a test string : that behaves as I expect*"
string2 = "this string also behaves as I expect*"
field = CharsNotIn(":*")
line = field + ZeroOrMore(Literal(":") + field) + Literal("*")
print line.parseString(string1)
print line.parseString(string2)
이 생산 :
['this is a test string ', ':', ' that behaves as I expect', '*']
['this string also behaves as I expect', '*']