「begin print x;;;」を取得したい これからの re.search による Python の場合:
fv (x,y,z) begin print x;;; 印刷 ;;; x + y + z end を返します。
私はこれを試しました:begin = re.search("begin .+;;;", line)
しかし、これは次の文字列を返します: "begin print x;;; print y ;;;"
何か案が?
繰り返しはデフォルトで貪欲です。つまり、できるだけ多くの文字に一致します。これ.+
により、最初の文字列が右に渡され;;;
、最後の文字列まで文字列の残りの部分が一致します;;;
。
これを防ぐには、をに変更.+
し.+?
ます。これにより、繰り返しが遅延します(できるだけ少ない文字に一致します)。
begin = re.search("begin .+?;;;", line)
+の貪欲でないバージョンが必要です。デフォルトで.+
は、可能な限り多くの文字に一致するため、「開始」から「;;;」の最後の出現までのすべてをキャッチします。re.search("begin .+?;;;", line)
代わりに試してください。