2015-05-20 116 views
3

我需要一个正则表达式,它可以实际获得在“ab”和“cr”之后插入的任何数字。例如,我有一个这样的字符串:获取字符串后的数字php正则表达式

rw200-208-ab66 
fg200-cr30-201 

我需要打印ab66cr30

我一直在使用strpos尝试:

if (strpos($part,'ab') !== false) { 
      $a = explode("ab", $part); 
      echo 'ab'.$a[1]; 
    } 

这并不第二项工作。

+0

您尝试过什么吗? – Rizier123

+1

已更新的问题。 – Liza

回答

2

使用这个表达式:

(?>ab|cr)\d+ 

IDEONE demo

$re = "#(?>ab|cr)\d+#"; 
$str = "rw200-208-ab66\nfg200-cr30-201"; 
preg_match_all($re, $str, $matches); 
print_r($matches[0]); 

输出:

Array 
(
    [0] => ab66 
    [1] => cr30 
) 
3

您可以使用\K放弃最后打印的以前匹配的字符。下面的正则表达式会给你的号码旁边abcr存在。

(?:ab|cr)\K\d+ 

要获得同样的字母数,使用

preg_match_all('~(?:ab|cr)\d+~', $str, $match); 
+0

或'(?:ab | cr)(\ d +)'使用此正则表达式,然后从组索引1中获取数字。 –