Regex для извлечения этих полуформатированных данных - PullRequest
0 голосов
/ 02 апреля 2010

Хорошо, я не могу понять, как это сделать.

С учетом следующего текста:

Roland AX-1:


/start
Roland's AX-1 strap-on remote MIDI controller has a very impressive 45-note velocity sensitive keyboard, and has switchable velocity curves, goes octave up/down, transpose, split/layering zones, and has fun tempo control for sequencers and more. Roland's AX-1 comes with a built-in GS control for total MIDI control of GM/GS synths. Its "Expression Bar" can control pitch and mod via an almost ribbon-like controller. It's also the newest and most advanced remote controller for your synths or midi modules.
/end

Roland AX-7:

/start
Roland's AX-7 builds on the infamous Roland AX-1 design. You just strap it on and put it to the front of the stage. Offering several controllers, such as: a D-Beam, then you can open the door to amazing live performance. 7-segment LED display, larger patch memory (Around 128 patches with MIDI data backup), and comes with GM2/GS compatibility make it extra easy to use. The 45-note, velocity-sensitive keyboard. 5 realtime controllers including a data entry knob, touch controller knob, opression bar, a hold button, and D-Beam. 128 patches with MIDI data backup. 2 MIDI zones.
/end

Я пытаюсь использовать следующее:

/^([\w\d \-]*):\s\s\s\s^\/start([^\:]*)\/end$/im

Вы можете увидеть на рубли здесь:

http://rubular.com/r/BVRRHsnWdp

Спасибо за любую помощь. Я предполагаю, что пытаюсь сопоставить блоки текста, пока не достигну следующего заголовка, который всегда заканчивается :$

Ответы [ 2 ]

1 голос
/ 02 апреля 2010

Проблема с вашим решением: [^\:]* не позволяет использовать двоеточия в абзаце, но они есть. Попробуйте это, используя не жадное совпадение для абзацев:

/^([\w\d \-]*):\s+^\/start(.*?)\/end$/im
0 голосов
/ 02 апреля 2010

Посмотрите на оператора "триггера" Руби. Это очень полезно для такого рода проблем.

" Когда будет полезен триггер Ruby? " охватывает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...