1
我需要解析一些語句,但希望靈活使用多個單詞來表示語句。當兩個以上匹配時,Pyparsing OR操作使用最短字符串
例如。
string = """
start some statement end
other stuff in between
start some other statement.
other stuff in between
start another statement
"""
在這種情況下
end
,
.
和行末
是將信號結束時,我正在尋找的聲明 令牌。
我試過如下:
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'], {})], {})
通過使用或功能,如果有兩個以上的比賽返回最大的字符串,我想還是要回到最短串 導致
([(['start', ' some statement end'], {}), (['start', ' some other statement.'], {}), (['start', ' another statement'], {})], {})
我嘗試了比賽第一種方法與SkipTo但就像你說的很對跳過在第一場比賽匹配第一個序列。你的答案100% – EDWhyte