Я пытаюсь получить определенные идентификаторы из строки, но я не могу заставить ее работать. Я получаю значения, которых я не ожидаю в своем результате.preg_match_all по идентификаторам процессов в строке
Это то, что у меня есть:
<?php
$grep = ' 7027 ? S 0:00 nginx: worker process
7632 ? S 0:00 sh -c ps ax | grep nginx
7634 ? S 0:00 grep nginx
16117 ? Ss 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf';
if (preg_match_all('~([0-9]+) \?(.*?)nginx:~si', $grep, $matches))
{
echo '<pre>';
print_r($matches);
echo '</pre>';
}
Что я ожидал здесь с: ~([0-9]+) \?(.*?)nginx:
в том, что она будет соответствовать эти две строки:
7027 ? S 0:00 nginx: worker process
16117 ? Ss 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf';
Я специально после идентификатора процесса , в этом случае: 7027
и 16117
.
Но я получаю: 7027
и 7632
вместо этого.
Как мое регулярное выражение должно получить данные, которые я хочу?
Вот демо: http://codepad.viper-7.com/2R5OfF