Регулярное выражение для сопоставления текста между 9 пробелами

#regex

Вопрос:

Я хотел бы захватить текст между фиксированным числом 9 пробелов из текста, который выглядит следующим образом: Демо

      (LD4377) Masinuta clasica din lemn tractor - albastru             1                                                              buc                  3             15.00       45.00                  8.55         - Little Dutch         
 

Что я хочу извлечь: (LD4377) Masinuta clasica din lemn tractor - albastru - Little Dutch

Что я использую: s{9}((?:(?:[a-z0-9A-Z-/()]) [ ]{1}) )s{9}

Есть ли более эффективный способ получить нужный текст? Любая помощь будет очень признательна!

Ответ №1:

Вы можете развернуть цикл, сначала повторив только класс символов, а затем, при необходимости, повторить группу без захвата с начальным пробелом.

Вы можете [ ]{1} заменить простым пробелом

 s{9}([a-z0-9A-Z/()-] (?: [a-z0-9A-Z-/()-] )*)s{9}
 

Демонстрация регулярных выражений