我有一个这样的字符串:
{param1}{param2}{param3}....{myparam paramvalue}{paramn}
如何获得paramvalue
myparam
答案 0 :(得分:2)
简单的正则表达式:
/\({[^ ]+?) ([^}]+?)\}/
{[^ ]+?)
- 它会查找至少1次出现但空格并将其放入子模式的任何内容([^}]+?)
- 它会查找至少1次发生但{
的任何内容并将其放入子模式中。将其与preg_match()
功能
OR
另一个简单的正则表达式:
preg_match('/([a-z0-9]+?) ([a-z0-9]+?)\}/', $str, $matches);
([a-z0-9]+?)
- a-z 0-9至少有一次不贪心([^}]+?)
- a-z 0-9至少有一次不贪心<强>输出:强>
Array ( [0] => myparam paramvalue} [1] => myparam [2] => paramvalue )
答案 1 :(得分:1)
试试这个正则表达式:
/\{\w+\s+(\w+)\}/
答案 2 :(得分:1)
if(preg_match('/\{'.preg_quote('myparam').' ([^\}]+)\}/', $input, $matches) {
echo "myparam=".$matches[1];
} else {
echo "myparam not found";
}
答案 3 :(得分:1)
要专门获取该参数值,首先必须匹配左侧部分:
/\{myparam/
至少有一个空格:
/\{myparam\s+/
捕获字符,直到找到一个结束的大括号:
/\{myparam\s+([^}]+)\}/
表达式[^}]+
是一个负字符集,由开始括号后面的^
表示;它的意思是“匹配除了这些之外的所有字符”。
答案 4 :(得分:0)
你也可以尝试这个:
.+?\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.