[英]How to match several lines with regex
给定具有以下文本的unicode对象:
a
b
c
d
e
aaaa
bbbb
cccc
dddd
eeee
我想得到第二组线,换句话说,在空白线之后的每一行。 这是我用过的代码:
text = ... # the previous text
exp = u'a\nb\nc\nd\n\e\n{2}(.*\n){5}'
matches = re.findall(exp, text, re.U)
实际上,这只会检索最后一行。 我能做些什么来获得最后五个?
你正在重复捕获组本身,它会在下一次重复时覆盖每个匹配。
如果你这样做
exp = ur'a\nb\nc\nd\n\e\n{2}((?:.*\n){5})'
你得到了五条线。
除非您手动拼出组,否则无法进入单独的比赛:
exp = ur'a\nb\nc\nd\n\e\n{2}(.*\n)(.*\n)(.*\n)(.*\n)(.*\n)'
为什么不呢:
text[text.index('\n\n') + 2:].splitlines()
# ['aaaa', 'bbbb', 'cccc', 'dddd', 'eeee']
如果您搜索的文本对您不想要的第一部分的字符数有某种限制,为什么不设置只搜索超过X个字母的单词,如:
^[a-z]{2,}
这将使每个单词大于2个字符。
您可以控制为:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.