次のような文字列があります。
{param1}{param2}{param3}....{myparam paramvalue}{paramn}
paramvalue
の取得方法myparam
次のような文字列があります。
{param1}{param2}{param3}....{myparam paramvalue}{paramn}
paramvalue
の取得方法myparam
簡単な正規表現:
/\({[^ ]+?) ([^}]+?)\}/
{[^ ]+?)
- 少なくとも 1 回発生したものを探しますが、スペースはサブパターンに入れます([^}]+?)
- 少なくとも 1 回発生したものをすべて検索し{
、サブパターンに入れます。preg_match()
関数で使用する
また
他の単純な正規表現:
preg_match('/([a-z0-9]+?) ([a-z0-9]+?)\}/', $str, $matches);
([a-z0-9]+?)
- az 0-9 少なくとも 1 回は貪欲ではない([^}]+?)
- az 0-9 少なくとも 1 回は貪欲ではない出力:
Array ( [0] => myparam paramvalue} [1] => myparam [2] => paramvalue )
この正規表現を試してください:
/\{\w+\s+(\w+)\}/
if(preg_match('/\{'.preg_quote('myparam').' ([^\}]+)\}/', $input, $matches) {
echo "myparam=".$matches[1];
} else {
echo "myparam not found";
}
これも試すことができます:
.+?\s+([^}]+)
編集
説明:
.+? means match everything one or more time but its lazy, will prefer to match as less as it can.
\s+ means it will match white-spaces one or more time.
([^}]+) means match everything except `}`(close bracket) one or more time and capture group.