1

「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 ;;;"
何か案が?

4

2 に答える 2

2

繰り返しはデフォルトで貪欲です。つまり、できるだけ多くの文字に一致します。これ.+により、最初の文字列が右に渡され;;;、最後の文字列まで文字列の残りの部分が一致します;;;

これを防ぐには、をに変更.+.+?ます。これにより、繰り返しが遅延します(できるだけ少ない文字に一致します)。

begin = re.search("begin .+?;;;", line)
于 2012-05-31T22:28:42.723 に答える
1

+の貪欲でないバージョンが必要です。デフォルトで.+は、可能な限り多くの文字に一致するため、「開始」から「;;;」の最後の出現までのすべてをキャッチします。re.search("begin .+?;;;", line)代わりに試してください。

于 2012-05-31T22:28:26.573 に答える