简体   繁体   English

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

[英]get a string php regex match

here is my string 这是我的字符串

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 eastern 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 br t einstein albert (en stein) 318 albert en stein albert epstein 134 albert epstein alert einstein 139 alert einstein 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东部62恩塞恩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 be t einstein albert(en stein)318 albert en stein albert epstein 134 albert epstein alert爱因斯坦警告爱因斯坦

I need to get the value in between false and the number next to the words.. in the above case I require 我需要在false之间获取值和单词旁边的数字..在上面我要求的情况下

... false albert einstein 154 ... => albert einstein ... false albert einstein 154 ... => albert einstein

I tried the below regex match, but its not working. 我尝试了下面的正则表达式匹配,但它不起作用。 What am I missing here? 我在这里错过了什么?

$matches=array();
preg_match('/false=([a-z]+)\[0-9]+/', $response, $matches);
echo $matches[1];

Try a pattern like this: 尝试这样的模式:

false\s*(.+?)\s*[0-9]+

This will match: 这将匹配:

  • false - the literal string false false - 文字字符串false
  • \\s* - zero or more whitespace characters \\s* - 零个或多个空格字符
  • (.+?) - one or more of any character, non-greedily, captured in group 1 (.+?) - 第1组中捕获的任何角色中的一个或多个非贪婪
  • \\s* - zero or more whitespace characters \\s* - 零个或多个空格字符
  • [0-9]+ - one or more decimal digits [0-9]+ - 一个或多个十进制数字

For example: 例如:

$input = 'false albert einstein 154';
preg_match('/false\s*(.+?)\s*[0-9]+/', $input, $matches);
echo $matches[1]; // 'albert einstein'

The following works for me: 以下适用于我:

$response = ".false albert einstein 154.";
$matches=array();
preg_match('/.*?false ([a-z\s]+) (?=[0-9]{3}).*/', $response, $matches);
echo $matches[1];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM