我只是在学习python,但有一个问题,即如何为下面的字符串创建regex模式
"...', 'begin:32,12:1:2005-10-30 T 10:45:end', 'begin:33,13:2:2006-11-31 T 11:46:end', '... <div dir="ltr">begin:32,12:1:2005-10-30 T 10:45:end<br>begin:33,13:2:2006-11-31 T 11:46:end<br>..."
我试图在n次迭代中提取begin:和:end之间的数据,而不获取重复数据。我附上了我目前的尝试。在
^{pr2}$输出为:
^{3}$我希望它是:
32
12
1
2005-10-30 T 10:45
33
13
2
2006-11-31 T 11:46
谢谢你的帮助。在
你需要使你的模式的可变大小部分“非贪婪”。也就是说,使它们匹配尽可能小的字符串,而不是最长的字符串(这是默认值)。在
尝试模式
'.begin:(.*?),(.*?):(.*?):(.*?:.*?):end.'
。在另一个选择是布莱克恩特和蒂姆·皮茨克的
不是选择非贪婪扩展,而是使用
[^X]
来表示某些X的“任何字符但是X”优点是它更严格:没有办法在结果中获取分隔符,因此
^{pr2}$不匹配,而对于Blckknght和Tim Pietzcker的,则可能不匹配。这在现实世界中可能并不重要。在
当然,缺点是它更僵硬。在
我建议两种方法都更合理。在
.*
是一个贪婪的,与你想要的:end
边界相匹配。将所有.*
替换为lazy.*?
。在使用修改后的模式,强制在匹配的开始/结尾出现单引号:
^{pr2}$相关问题 更多 >
编程相关推荐