正则表达式在最后一组括号中找到数字

时间:2016-11-11 10:26:23

标签: php regex

我正在努力制作一个正则表达式,它从字符串中提取最后一组括号之间的数字,这就是我到现在所说的:

^.*?\([^\d]*(\d+)[^\d]*\).*$

E.g:

This is, (123456) a string (78910);

它返回123456,这很棒,但我需要它来查看最后一组并返回78910.另外,我希望正则表达式忽略除数字之外的所有内容:

This is, (123bleah456) a string (789da10);

应该返回:78910

更新

使用正则表达式:

(\d+)(?!.*\d)

对于字符串:

Telefon Mobil (123)Apple iPhone 6 128GB Gold(1567)asd234

当它应该是1567时将返回234

Rubular

1 个答案:

答案 0 :(得分:2)

您可以使用greed提取最后一个:

.*\(\K\d+

See demo at regex101

\K resets报告的比赛开始。

对于更具体的更新案例,稍微修改正则表达式并删除非数字。

$str = "This is, (123bleah456) a string (789da10);";

if(preg_match('/.*\(\K\d[^)]*/', $str, $out))
  $res = preg_replace('/\D+/', "", $out[0]);

See demo at eval.in