我有这个数据
Date = 10
data = ["""Number of Days are 4 days :
john: 12
jade: 452
kent: 3542
Number of Days are 10 days :
john: 34
jade: 765
kent: 9473"""]
我需要保存在变量'日期= 10'中的10天而不是4天的约翰,玉和肯特的数据。 。任何人都可以在python 3.X中建议任何正则表达式来解决这个问题吗?
答案 0 :(得分:1)
使用新线条执行此操作有点复杂,任何角色分割都会更容易,但这就是我所得到的:
import re
Date = "10"
regex = r"(?<=Number of Days are %s days : \n\n)(.+\n{0,2})+?((?=Number of Days)|(?=$))" % (Date)
test_str = ("""Number of Days are 4 days :
john: 12
jade: 452
kent: 3542
Number of Days are 10 days :
john: 34
jade: 765
kent: 9473
Number of Days are 11 days :
john: 34
jade: 765
kent: 9473""")
matches = re.search(regex, test_str)
if matches:
print (matches.group())
我的正则表达式如下:
r"(?<=Number of Days are %s days : \n\n)(.+\n{0,2})+?((?=Number of Days)|(?=$))"
第一部分:
(?<=Number of Days are %s days : \n\n)
这会查看您的搜索字符串Number of Days are %s days
%s
是否在您的变量日期上引用
第二部分:
(.+\n{0,2})+
查找末尾有0或2个新行的任何字符。
第三部分:
?((?=Number of Days)|(?=$))
这看起来是否有任何Number of Days
或者它是字符串的结尾,并且如果这是真的,则阻止第二部分获得更多匹配。