Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于查找逗号在字母之前的每一次的正则表达式_Python_Regex_Regex Greedy - Fatal编程技术网

Python 用于查找逗号在字母之前的每一次的正则表达式

Python 用于查找逗号在字母之前的每一次的正则表达式,python,regex,regex-greedy,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')] 我试过了 但结果也是一样的,我需要所有的值,直到

我的字符串如下所示:

    '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')]
我试过了


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

您可以在
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]|$)
    :Lookahead断言前面有一个逗号,后跟一个字母表或字符串结尾

@anubhava谢谢,我已经试过了,但是像['c=34','bc=78','h=565']这样的人需要所有的值,比如[(c=('34','76','67','54'),(bc=('78','45'),(h='565','64')]你试过什么正则表达式吗?@anubhava我试过mylist=re.findall(r)(\w+)(\d+)(\d+,\d+,\d+),\d*),mystring)…但结果也是一样,我需要所有的值,直到它在字母前找到逗号,建议您编辑问题并在问题本身中显示此尝试(这是人们向下投票的主要原因,因为没有显示尝试)。