абсолютно не регулярное выражение решение возможно:
$str = 'VN7-572G-75AJ(NX.G6GSA.001)';
echo strstr($str, '(', true); // Part 1
echo "\n";
echo trim(strstr($str, '('), '()'); // Part 2
См . Первый VN7-572G-75AJ
часть может быть легко получена с strstr
(истинного аргумента значения $before_needle
, нам нужно все до того, как символ указано), а второй один получает все подстроки из первого (
до конца, а затем trim
помогает удалить (
и )
от начального и конечного положений.
Если вы хотите, чтобы ваше регулярное выражение фиксированы, вот решение:
$str = 'VN7-572G-75AJ(NX.G6GSA.001)';
preg_match('#^([^(]*)\(([^()]*)\)$#', $str, $matches);
echo $matches[1] . "\n" . $matches[2];
Вот PHP demo
Детали:
^
- начало строки
([^(]*)
- Группа 1: ноль или более сим кроме (
\(
Bols - буквальный (
([^()]*)
- Группа 2: 0+ кроме (
и )
\)
символы - это литеральные )
символа
$
- конец строки.
Другой - проще регулярное выражение способ - это найдено 1+ других символов, чем (
и )
:
preg_match_all('#[^()]+#', $str, $matches);
echo $matches[0][0] . "\n" . $matches[0][1];
См this PHP demo
Или: https://eval.in/687290 :) Еще проще. – sinisake
Да, может быть больше подходов. –