これらのテキストのいずれかに一致する正規表現(PHP)を作成しようとしています。
#{text}
#{text1}{text2}
#{text1}{numbers}{text2}
#{text1}{text with spaces}{numbers}{text2}
など。基本的に、最初のブロックはスペースのないテキストしか保持できませんでしたが、残りのブロックは何でも保持できました。その後、それらのtext1 ... numbersなどに一致するように取得します。いくつかの正規表現を試してみましたが、うまくいきませんでした。これが最後のものです:
/#{(\w+)}({([\ a-zA-Z0-9*])})*/U
前もって感謝します!
編集: @stemaが提案したように、正規表現をこれに変更しました:
/#\{(\w+)\}(\{([^}]*)\})*/
Ungreedyフラグは表現にまったく役立たなかったので、避けました:)。ただし、結果は必要な数ではありません。
array(4) {
[0]=>
string(42) "#{text1}{text with spaces}{numbers}{text2}"
[1]=>
string(5) "text1"
[2]=>
string(7) "{text2}"
[3]=>
string(5) "text2"
}
中間のパラメーターは解析されていないようです(これは私には奇妙に見えます)。