0

我想匹配一个结束标记,后跟一个 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>即使问号应该使它“懒惰”,它也会匹配。

4

2 回答 2

0

使量词变得惰性只会使正则表达式首先尝试最短的匹配,但如果这不起作用,它会很高兴地扩展匹配,直到整个正则表达式成功。

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

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

(另外,\s已经包含\n,所以\s*\n*\s*可以缩短为\s*

于 2014-03-01T18:35:20.947 回答
0

尝试:

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

如果您希望能够匹配空标签,请将“+”更改为“*”

于 2014-03-01T18:38:05.297 回答