正则表达式识别' x:... y:... z:...'在python中

时间:2014-07-02 16:57:59

标签: python regex

有一个字符串,其内容格式为&#34; x:... y:... z:...&#34;,&#39; ...&#39;代表任何字符排除&#39; <#39; 包含任意数量的空格,我试图将此类字符串拆分为[ &#39; x:...&#39;,&#39; y:...&#39;,&#39; z:...&#39;],如何在python中执行此操作?

示例字符串:

'name: myname\n\naddress: myaddress1\nmyaddress2\n\nmyadress3\ncontact:mycontact\n'

我想得到的是:

['name: myname\n\n', 'address: myaddress1,\nmyadress2,\n\nmyadress3\n', 'contact:mycontact\n']

2 个答案:

答案 0 :(得分:6)

re.compile('\w+:[^:]*?(?=\w+:|$)')

含义

  1. 将一个或多个单词字符与冒号匹配
  2. 比较一切不是冒号懒惰
  3. 找到一个或多个单词字符和冒号或行尾
  4. Demo

答案 1 :(得分:2)

捕获:之外的任何字符都没有用,因为它包含换行符和address。您的实际要求似乎是:将所有文本匹配到包含冒号的下一行的开头。这是一种方法:

re.split("\n+(?=.*:)", s.strip())

模式意味着“一组换行符后跟任何包含冒号的文本”。删除输入,以便最后的最后一行不会包含在最终结果项中。