得到一个字符串php正则表达式匹配

时间:2013-11-17 03:21:45

标签: php regex

这是我的字符串

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];

2 个答案:

答案 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];