我有这个字符串
@ [123:peterwateber]你好095032sdfsdf! @ [589:ZZZZ]
我想得到 123和589 你是如何使用正则表达式或PHP中的东西?
注意:peterwateber和zzzz就是例子。应该考虑任何随机字符串
答案 0 :(得分:7)
不要忘记前瞻,因此您不匹配095032
:
$foo = '@[123:peterwateber] hello there 095032sdfsdf! @[589:zzzz]';
preg_match_all("/[0-9]+(?=:)/", $foo, $matches);
var_dump($matches[0]); // array(2) { [0]=> string(3) "123" [1]=> string(3) "589" }
答案 1 :(得分:2)
以下正则表达式将连续提取一个或多个数字字符:
preg_match_all('#\d+#', $subject, $results);
print_r($results);
答案 2 :(得分:1)
有一个名为preg_match_all
的函数第一个参数接受正则表达式 - 以下示例显示'匹配至少一个数字,后跟任意数量的数字。这将匹配数字。
第二个参数是字符串本身,即要从中提取的主题
第三个是所有匹配元素所在的数组。所以第一个元素是123,第二个元素是589,依此类推
preg_match_all("/[0-9]+/", $string, $matches);