正则表达式,每次逗号都在字母之前

时间:2018-06-15 11:22:02

标签: python regex regex-greedy

我的字符串如下:

    'a=b,1,2,3,4,**c**=34,76,67,54,**bc**=78,45,**h**=565,64'

试过:

mylist = re.findall(r"(\w+):(\d+(?:,\d+)*)", mystring)

输出:带字符串的粗体字符:

     [(**c**=('34','76','67','54')),(**bc**=('78','45')),(**h**='565',64')]

我试过了。

但这也是一样的结果,我需要所有值,直到它在字母表中找到逗号。

1 个答案:

答案 0 :(得分:1)

您可以在findall中使用这个基于前瞻性的正则表达式:

>>> str = 'a=b,1,2,3,4,c=34,76,67,54,bc=78,45,h=565,64'
>>> print re.findall(r',([a-zA-Z].*?)(?=,[a-zA-Z]|$)', str)
['c=34,76,67,54', 'bc=78,45', 'h=565,64']

正则表达式详细信息:

  • ,:匹配文字逗号
  • ([a-zA-Z].*?):后跟一个捕获组,该捕获组匹配以字母开头,后跟0或更多任何字符(非贪婪)的文本
  • (?=,[a-zA-Z]|$):预见断言我们有一个逗号,后跟字母或前面的字符串结尾

RegEx Demo