現在、Poeditでウェブサイト(Smarty)を翻訳しています。 .tplファイルからすべてのテキストを取得するには、正規表現を使って{t}と{/ t}の間のデータを取得しています。その一例:Regex:複数の角かっこの間で値を読み取る
{t}Password incorrect, please try again{/t}
正規表現はPassword incorrect, please try again
を読んでの.poファイルに配置します。これはすべて正常に動作しています。それはもう少し進んだときに間違っています。
ときどき{t}タグ間のテキストにはパラメータが使用されます。これは次のようになります。
{t 1=$email|escape 2=$mailbox}No $1 given, please check your $2{/t}
これも素晴らしいです。私はこのようなパラメータ内のブラケットを使用する場合
本当の問題を開始:
{t 1={site info='name'} 2=$mailbox}visit %1 or go to your %2{/t}
私の正規表現は、それが最初の閉鎖ブラケットを見たときに結果が2=$mailbox}visit %1 or go to your %2
になります閉じます。
私の正規表現は、次のようになります。
\{t.*?\}?[}]([^\{]+)\{\/t\}|\{t\}([^\{]+)\{\/t\}
正規表現は、Javaプログラム内で使用されています。
誰でもこの問題を解決する方法はありますか?
修正は、ネストされた括弧を処理するためのパーサを書くことです。正規表現はこの種の問題をうまく処理しません。 –