2014-01-23 66 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 meinerauswärtigenHerkunftfühleich mich Akritiri immer noch sehr verbunden und ich hoffe,| dass wir heute eine gute Entscheidung treffenkönnen。 | Ichplädierefürein parlamentarisches Regierungssystem,| damit die Kontrolle besser gegeben ist und damit so schreckliche Ereignisse sich nie wieder wiederholenkönnen.' –

+0

好吧,我會檢查它並回復你。 –

+0

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

相關問題