如何匹配并捕获字符串开头的所有ORed正则表达式

问题描述:

我有一个字符串foobar1234。我想从中捕获下列字符串。如何匹配并捕获字符串开头的所有ORed正则表达式

  1. foobar的
  2. bar1234
  3. R1
  4. AR12

我已经在一起写多个正则表达式为每相或它们如下:

/(f.+r)|(b.+4)|(r1)|(a.+2)|(f.+o)/ 

但它只匹配并捕获第一个正则表达式,即(f。+ r)。我如何捕获剩余的表情?

+0

我使用preg_match_all但问题是关于每个或运算表达式从字符串的开头匹配。 – Soumith

用积极前瞻:

(?=(f.+r)|(b.+4)|(r1)|(a.+2)) 

PHP:

$str = 'foobar1234'; 
preg_match_all('/(?=(?|(f.+r)|(b.+4)|(r1)|(a.+2)))/', $str, $matches); 
print_r($matches); 
+0

谢谢。它主要解决,但我有另一个案件,它不起作用。我已经更新了这个问题以反映我的需求。 – Soumith