1

次の文があります。

Dave put the rubbish in the {{ if dave_good }}bin{{ else }}street{{ endif }}.

[[ something ]]現在、インスタンス全体をキャプチャして値に置き換えることにより、テキスト文字列の変数を置き換えています(問題ではありません)。しかし、それはpythonのreライブラリを使用しています。

誰かが私に次の方法を教えてくれるかどうか疑問に思っていました:

  1. {{ if dave_good }}文字列内の の単一インスタンスを検索します
  2. 文字列の末尾の前に{{ if dave_good }}a があることを確認するために、から前方に数えます{{ endif }}
  3. 存在しない場合は、のブール値属性に基づいて{{ else }}、タグ、またはタグとそのコンテンツ(テキスト内の場所)を削除します。dave_good
  4. ある場合{{ else }}
    1. ある場合dave_goodTRUE削除{{ if dav_good }}して{{ else }}street{{ endif}}
    2. ある場合dave_goodFALSE削除{{ endif }}して{{ if dave_good }}bin{{ else }}
4

2 に答える 2

1

正規表現で試してください。

例:

import re

result = re.match("\{\{((if|else|endif).*?)\}\}","{{if 100 > 1}}",re.I)
print result.groups()

result = re.match("\{\{((if|else|endif).*?)\}\}","{{else}}",re.I)
print result.groups()

result = re.match("\{\{((if|else|endif).*?)\}\}","{{endif}}",re.I)
print result.groups()

または、Python 用のテンプレート エンジンを使用します。

  1. 神社
  2. チーター
  3. テンプレート化
  4. ボトルピー

幸運を!

于 2013-11-04T17:18:55.083 に答える