Нечто подобное может сработать:
/Seat (\d+): ([^\(]+) \((\d+)in chips\)/
И некоторые основные объяснения того, как работает Regex:
\ d = цифра.
\ = экранирует символ, если не является частью какого-либо класса символов или подвыражения. например:
\t
будет отображать вкладку, в то время как \\t
будет отображать "\ t" (поскольку обратный слеш экранирован).
+ = один или несколько предшествующих элементов.
* = ноль или более предыдущего элемента.
[] = выражение в скобках. Соответствует любому из символов в скобках. Также работает с диапазонами (например, A-Z).
[^] = Соответствует любому символу, который НЕ находится в скобках.
() = отмеченное подвыражение. Соответствующие данные могут быть вызваны позже.
В любом случае, я решил использовать
([^\(]+)
, поскольку в примере указано имя, содержащее пробелы (место 3 в примере). то, что это делает, - то, что это соответствует любому символу вплоть до того, что это встречает вводный паратез.
Это оставит вас с пробелом в конце подвыражения (используя данные, приведенные в примере). Однако его можно легко удалить с помощью команды trim () в PHP.
Если вы не хотите сопоставлять пробелы, только буквенно-цифровые символы, вы можете сделать что-то вроде этого:
([A-Za-z0-9-_]+)
Который будет соответствовать любой букве (в пределах A-Z, как в верхнем, так и в нижнем регистре), числе, а также дефисам и подчеркиванию.
или тот же вариант с пробелами:
([A-Za-z0-9-_\s]+)
Где "\ s" вычисляется как пробел.
Надеюсь, это поможет:)