Php preg_match_所有设备均不工作

Php preg_match_所有设备均不工作,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,遵循正则表达式有什么不对 $source = "Je (1200) recycler(s) hebben een totale opslagcapaciteit van 24.000.000. In het bestemmingsveld [2:188:7] zweven 0 metaal en 5.000 kristal in de ruimte. Je hebt 0 metaal en 5.000 kristal opgehaald." echo $source; $regex =

遵循正则表达式有什么不对

$source =
"Je (1200) recycler(s) hebben een totale opslagcapaciteit van 24.000.000. 
In het bestemmingsveld [2:188:7] zweven 0 metaal en 5.000 kristal in de ruimte. 
Je hebt 0 metaal en 5.000 kristal opgehaald."


echo $source;
$regex  = 'Je \(([0-9.]*?)\) recycler(s) hebben een totale opslagcapaciteit van ([0-9.]*?). ';
$regex .= 'In het bestemmingsveld \[2:188:7\] zweven ([0-9.]*?) metaal en ([0-9.]*?) kristal in de ruimte. ';
$regex .= 'Je hebt ([0-9.]*?) metaal en ([0-9.]*?) kristal opgehaald.';

$matches = array();

preg_match_all('/' . $regex . '/i', $source, $matches, PREG_SET_ORDER);

print_r($matches);

recycler
中的括号需要反斜杠。试试:
recycler\(s\)


我在recycler中引用了parans,在新行前后添加了一些\s+,并在正则表达式匹配中添加了一个“s”修饰符

您的输入是否与示例中的几行相同?此外,您的数字应该用
[0-9]+(?:\[0-9]+)*
捕获,而不是
[0-9].*?
\u您希望它做什么?你收到错误信息了吗?我想你——至少有一件事——需要避开一些小组中的句号。([0-9.]*?)应该是([0-9\.]*?)——否则点会收集所有字符,那么0-9(如果这是点,我想不是)真的没有意义@MarkHünermundJensen,不,字符集中的
只匹配文本
@BartKiers我的错-谢谢你指出它
Je \(([0-9.]*?)\) recycler\(s\) hebben een totale opslagcapaciteit van ([0-9.]*?)\s+
\s+In het bestemmingsveld \[2:188:7\] zweven ([0-9.]*?) metaal en ([0-9.]*?) kristal in de ruimte.\s+
\s+Je hebt ([0-9.]*?) metaal en ([0-9.]*?) kristal opgehaald.