python:如何用正则表达式拆分这个字符串?

时间:2012-10-04 08:38:18

标签: python regex

这里很简单,但我对Python很新。

我有一个这样的字符串:

this is page one of an article 
<!--pagebreak page two --> this is page two 
<!--pagebreak--> this is the third page 
<!--pagebreak page four --> last page
// newlines added for readability

我需要使用此正则表达式来分割字符串:<!--pagebreak(*.?)--> - 我的想法是有时候<!--pagebreak-->评论有一个'标题'(我在模板中使用),有时候他们不会吨。

我试过了:

re.split("<!--pagebreak*.?-->", str)

仅返回分页符中带有“标题”的项目(并且未正确拆分它们)。我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

*.?更改为.*?

re.split("<!--pagebreak.*?-->", str)

您当前的正则表达式接受任意数量的文字k,可选地后跟(任何字符)。

另外,我建议您使用原始字符串(r"...")作为正则表达式。在这种情况下没有必要,但这是让你自己烦恼的一种简单方法。

答案 1 :(得分:2)

您将.*进行了交换。正确的正则表达式是:

<!--pagebreak.*?-->

答案 2 :(得分:2)

绝对是交换问题的一个问题。和*。 “”匹配所有,星号表示你将获得尽可能多的角色(当然受到非贪婪的限定符限制“?”)

import re

s = """this is page one of an article 
<!--pagebreak page two --> this is page two 
<!--pagebreak--> this is the third page 
<!--pagebreak page four --> last page"""

print re.split(r'<!--pagebreak.*?-->', s)

输出:

['这是文章的第一页\ n','这是第二页\ n','这是第三页\ n','最后一页']