Regex получает строку после ключевого слова

Мне нужно найти строку в строке и получить ее часть (без пробелов).

Пример:

This ABC-Code: 12 3 45 Another ABC-Code: 678 9 

Теперь я ищу ключевое слово ABC-Code: и я хочу получить числа после этого (удаление пробелов), поэтому результатом будет:

 12345 6789 

Я попытался сделать это с помощью substr (), но проблема в том, что предыдущие символы являются переменными. Поэтому я думаю, что мне нужно использовать RegEx, например:

 preg_match("#ABC-Code:(.*?)\n#", $line, $match); trim($match); // + remove spaces in the middle of the result 

Вам нужно использовать функцию preg_replace_callback .

 $str = <<<EOT This ABC-Code: 12 3 45 Another ABC-Code: 678 9 EOT; echo preg_replace_callback('~.*\bABC-Code:(.*)~', function ($m) { return str_replace(' ', '', $m[1]); }, $str); 

Вывод:

 12345 6789 

Вы можете использовать:

 preg_match('#ABC-Code: *([ \d]+)\b#', $line, $match); 

И затем используйте:

 $num = str_replace(' ', '', $match[1]); // 12345 

для вас номера.

Вы все еще можете сделать это с помощью substr:

 $string = 'This ABC-Code: 12 3 45'; $search = 'ABC-Code:'; $result = str_replace(' ', '', substr($string, strpos($string, $search) + strlen($search))); 

Но регулярное выражение в других ответах, конечно, красивее 🙂