这里很简单,但我对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)
仅返回分页符中带有“标题”的项目(并且未正确拆分它们)。我在这里做错了什么?
答案 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','最后一页']