2014-01-23 4 views
-1

у меня есть текст, как следующее:Perl регулярное выражение, не содержащее круглые скобки

Hallo ich bin Pra Lebo, | (_S ich wurde 1974 in Südafrika geboren, S_) | (_B <marker 
tag="1">denn</marker> meine Eltern, | beide Angehörige der Komtoru, | sind nach dem 
Umsturz ´73 ausgewandert. B_) | Trotz meiner auswärtigen Herkunft fühle ich mich Akritiri immer 
noch sehr verbunden und ich hoffe, | dass wir heute eine gute Entscheidung treffen können. | Ich 
plädiere für ein parlamentarisches Regierungssystem, | damit die Kontrolle besser gegeben ist und 
damit so schreckliche Ereignisse sich nie wieder wiederholen können. | 

Я хотел бы регулярное выражение для соответствия строк внутри (_S ... S_), другой регулярное выражение для сопоставления строк внутри (_B ...B_) и третий, чтобы соответствовать этим пролеты которые не находятся ни в одном из вышеперечисленных. В идеале у меня было бы три регулярных выражения. Как бы это сделать?

Первые две проблемы намного проще и на которые был дан ответ, однако третья проблема все еще остается. Мне нужно сопоставить самые большие строки, не окруженные никакими открывающимися или закрывающимися круглыми скобками. Любая помощь приветствуется.

ответ

1

Вы можете использовать регулярное выражение (?<=\(_S)((.|\n)*?)(?=S_\)) для получения строки внутри (_S и S_)

Demo

Аналогично вы можете использовать регулярные выражения (?<=\(_B)((.|\n)*?)(?=B_\)) для получения строки внутри (_B и B_)

Demo2

Для согласования этих двух, вы можете использовать:

(?:(?<=\(_S)((?:.|\n)*?)(?=S_\)))|(?:(?<=\(_B)((?:.|\n)*?)(?=B_\))) 

Demo3

Чтобы соответствовать строки, не заключенные в скобки, вы можете использовать что-то вроде этого:

(((?:^)|(?<=\)))(?:[^(])*) 

Demo4

+0

Спасибо, попробуем это через секунду. У вас также есть советы о том, как сделать третье регулярное выражение? Совместить все, что находится внутри скобок? Это последнее регулярное выражение должно возвращать два совпадения для моего примера выше: Матч 1: 'Hallo ich bin Pra Lebo,' Матч 2: '| Trotz meiner auswärtigen Herkunft fühle ich mich Akritiri immer noch sehr verbunden und ich hoffe, | dass wir heute eine gute Entscheidung treffen können. | Ich plädiere für ein parlamentarisches Regierungssystem, | damit die Kontrolle besser gegeben ist und damit so schreckliche Ereignisse sich nie wieder wiederholen können.' –

+0

Хорошо, я проверю его и отвечу. –

+0

'split()' on r1 | r2? – tjd

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