Ich brauche einige Aussagen zu analysieren, aber die Flexibilität der Verwendung mehrerer Wörter, um die Aussage zu signalisieren.Pyparsing ODER Operation verwenden kürzeste Zeichenfolge, wenn mehr als zwei übereinstimmen
z.
string = """
start some statement end
other stuff in between
start some other statement.
other stuff in between
start another statement
"""
in diesem Fall end
sind .
und Ende der Zeile die Tokens, die das Ende der Erklärung die ich suche signalisiert.
Ich habe versucht, die folgenden:
from pyparsing import restOfLine, SkipTo
skip_to_end_of_line = restOfLine
skip_to_dot = SkipTo('.', include=False)
skip_to_end = SkipTo('end', include=False)
statement = 'start' + skip_to_end_of_line^skip_to_dot^skip_to_end
statement.searchString(string)
([(['start some statement end\nother stuff in between\nstart some other statement'], {}), (['start', ' another statement'], {})], {})
Durch die Verwendung von ODER-Funktion es die größte String zurückgibt, wenn es mehr als zwei Spiele sind, würde Ich mag, oder die kürzeste Zeichenfolge was
([(['start', ' some statement end'], {}), (['start', ' some other statement.'], {}), (['start', ' another statement'], {})], {})
zurückzukehren
Ich habe versucht, eine Übereinstimmung ersten Ansatz mit skipto aber wie Sie sagten, dass sie übersprungen Recht auf das erste Spiel in der passe die erste Sequenz an. Deine Antwort funktioniert 100% – EDWhyte