次のような文字列があります。
{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.