这是我的字符串
0 12 10 0 5 0 albert 126 al br t 881 alert 58 a lbr t 317 apart 251 al b rt 284 ambit 165 a lb rt 9 album 93 al br t 881 10 6 13 0 einstein 92 en stein 219 epstein 8 en stein 335 east 62 ens t ein 317 enshrin 13 en st ein 231 enseign 3 ens tei n 203 false albert einstein 154 albert einstein(al br t)einstein 1030 al t t einstein albert(en stein) 318 albert en stein albert epstein 134 albert epstein alert einstein 139 alert einstein
我需要在false和单词旁边的数字之间得到值..在上面的例子中我需要
... false albert einstein 154
... => albert einstein
我尝试了下面的正则表达式匹配,但它不起作用。我在这里缺少什么?
$matches=array();
preg_match('/false=([a-z]+)\[0-9]+/', $response, $matches);
echo $matches[1];
答案 0 :(得分:3)
尝试这样的模式:
false\s*(.+?)\s*[0-9]+
这将匹配:
false
- 文字字符串false
\s*
- 零个或多个空白字符(.+?)
- 第1组中捕获的任何角色中的一个或多个,非贪婪\s*
- 零个或多个空白字符[0-9]+
- 一个或多个十进制数字例如:
$input = 'false albert einstein 154';
preg_match('/false\s*(.+?)\s*[0-9]+/', $input, $matches);
echo $matches[1]; // 'albert einstein'
答案 1 :(得分:1)
以下适用于我:
$response = ".false albert einstein 154.";
$matches=array();
preg_match('/.*?false ([a-z\s]+) (?=[0-9]{3}).*/', $response, $matches);
echo $matches[1];