2015-07-12 3 views
3

Я пытаюсь повторно использовать группу регулярных выражений.Повторное использование группы регулярных выражений в строке

Что у меня есть:

Other Stuff 
Other Stuff 
Anker: 'Result1' 'Result2' 'Result3' 'Result4' 'ResultN' 
Other Stuff 
Other Stuff 

Что я хочу:

$aVariable = [Result1, Result2, Result3, Result4, ResultN]; 

То, что я пробовал:

Anker:(?: '(.*?)')+ 

(И поверьте мне, многие, многие другие регулярные выражения, но Я не понимаю.)

Каков правильный способ получить несколько элементов в одной строке?

Заранее благодарен!

+1

Какие языки вы работаете? –

+0

На данный момент я запускаю это в regex buddy, который не зависит от языка. Я вставляюсь в Regex, а не в реализации на определенном языке. –

+0

Если вы используете C#, это очень просто с коллекцией 'Captures'. Добавьте к этому вопрос свой языковой тег. Вот вы, попробуйте в RegexBuddy: ['(? M)^Anker: (?: \ S * ('[^'] * ')) +'] (http://regexstorm.net/tester?p= (% 3fm)% 5eAnker% 3a (% 3f% 3a% 5cs * (% 27% 5b% 5e% 27% 5d *% 27))% 2b & я = Другие + Материал +% 0d% 0aOther + Материал% 0d% 0aAnker% 3a +% 27Result1% 27 +% 27Result2% 27 +% 27Result3% 27 +% 27Result4% 27 +% 27ResultN% 27% 0d% 0aOther + Stuff% 0d% 0aOther + Stuff), (см. ** Таблица ** вкладка в * RegexStorm.net *). –

ответ

2

Попробуйте нижнее выражение \G.

$re = "/(?:^Anker:|\\G(?!^))\\h*'([^']*)'/m"; 
$str = "Other Stuff \nOther Stuff\nAnker: 'Result1' 'Result2' 'Result3' 'Result4' 'ResultN'\nOther Stuff\nOther Stuff"; 

preg_match_all($re, $str, $matches); 
print_r($matches[1]); 

DEMO

+0

Вы, сэр, заслуживаете значка! –

+1

lol :-) Я люблю '\ K' –

+0

Я думаю, что смотрю-за спиной и нулевую ширину .. –

Смежные вопросы