正则表达式匹配表达式后跟小写字符

时间:2014-03-01 18:30:58

标签: python regex calibre

我希望匹配一个结束标记,后跟一个0+空格/换行符,后跟一个开头标记,后跟一个小写字母。例子:

  • text</p> <p>blah匹配</p> <p>
  • text</i><i>and more text <b>but not this</b>匹配</i><i>
  • text</i> <i>And more text不匹配

我尝试了这个:</.*?>\s*\n*\s*<.*>(?=[a-z]),但它不适用于第二个示例,因为它会匹配</i><i> and more text </b>,即使问号应该使其“懒惰”。

2 个答案:

答案 0 :(得分:0)

使量化器延迟仅使正则表达式尝试最短的匹配首先,但如果这不起作用,它将很乐意扩展匹配,直到整个正则表达式成功。

您需要更具体地说明您允许匹配的内容 - 例如,不允许在标记内使用尖括号:

</[^<>]*>\s*<[^/][^<>]*>(?=[a-z])

(此外,\s已包含\n,因此\s*\n*\s*可缩短为\s*

答案 1 :(得分:0)

尝试:

</[^>]+>\s*<[^/>]+>(?=[a-z])

如果您希望能够匹配空标记

,请将“+”更改为“*”