2013-01-17 74 views
0

我有一個包含一些註釋標記的文本塊:解析書式的字符分隔字符串

Lorem ipsum dolor sit amet<--this is a comment-->, consectetur adipiscing<--replace=>with this--> elit. Maecenas massa ip<---123=<--=>+456>=->-->sum, ultrices quis semper porttitor, cursus at lectus.

我想寫一個正則表達式,將捕獲<--xxx=>yyy-->標記的所有實例的內容。從上面的文字中,這將返回[('replace', 'with this'), ('-123=<--', '+456>=->')]。問題在於文本和註釋可以包含任意數量的字符組合(除了註釋標記分隔符<--,-->=>)。

是否可以用一個正則表達式來完成此操作?我使用Python來測試這個,但正則表達式應該可以在多個平臺上工作。

回答

2

這應該是一個正則表達式的工作根據更新後的匹配要求:

/<--((?:[^=-]|(?:=(?!>)|-(?!->)))+)=>((?:[^=-]|(?:=(?!>)|-(?!->)))+)-->/g 

此過濾分隔符--><--=>這是不允許捕捉組中。請注意0​​修飾符用於全局匹配。提取每個匹配的兩個組以獲得所需的結果。

RegExr

+0

該方法適用於例如文本,但不包括所有必要的場景。正則表達式需要能夠匹配ascii字符的任意組合。 – woemler

+0

@willOEM「ascii字符的任意組合」還包括分隔符'<--', '=>'和' - >'。但我想這些不應該成爲評論的一部分。請更具體地說明什麼是允許的,什麼不是。 – speakr

+0

是的,你是現貨。這個想法是,所需的文本可以包含任何字符,包括分隔符中使用的字符,但是使得標籤不應該出現在註釋中的字符組合。到目前爲止,這個正則表達式匹配我所有的測試,謝謝! – woemler