使用正则表达式解析以书本结尾的字符分隔的可变长度字符串

时间:2013-01-17 22:16:33

标签: regex

我有一个包含许多注释标记的文本块:

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来测试它,但正则表达式应该可以在多个平台上运行。

1 个答案:

答案 0 :(得分:2)

根据您更新的匹配要求,这应该是一个正常工作的正则表达式:

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

这会过滤捕获组中不允许的分隔符--><--=>。请注意全局匹配的g修饰符。为每个匹配提取两个组以获得所需的结果。

RegExr