Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

Python 正则表达式查找子字符串,然后根据分隔符进行拆分

Python 正则表达式查找子字符串,然后根据分隔符进行拆分,python,regex,Python,Regex,我正在尝试解析一个文件,其中包含表单的字符串 key=v1,v2,v3,...,vn; 包含在较大的字符串中。我知道如何使用标准的python字符串运算符实现这一点,但我想使用正则表达式。我可以用 s = "key=v1,v2,v3,v4,v5;" re.findall(key=(.*?)\;',s) 返回 ['v1,v2,v3,v4,v5'] ['v1', 'v2', 'v3', 'v4', 'v5'] 我可以使用以下方法分别拆分返回的子字符串: s = "v1,v2,v3,v4,v5

我正在尝试解析一个文件,其中包含表单的字符串

key=v1,v2,v3,...,vn;
包含在较大的字符串中。我知道如何使用标准的python字符串运算符实现这一点,但我想使用正则表达式。我可以用

s = "key=v1,v2,v3,v4,v5;"
re.findall(key=(.*?)\;',s)
返回

['v1,v2,v3,v4,v5']
['v1', 'v2', 'v3', 'v4', 'v5']
我可以使用以下方法分别拆分返回的子字符串:

s = "v1,v2,v3,v4,v5"
re.findall(r'(.+?)(?:,|$)', s)
返回

['v1,v2,v3,v4,v5']
['v1', 'v2', 'v3', 'v4', 'v5']
但是不知道如何将它们组合成一个正则表达式。

您可以使用

[^,=]+?(?=,|;)
也就是说-重复非逗号、非等号字符,直到先行查找匹配逗号或分号


谢谢如果s=“key1=v1,v2,v3;key2=v3,v4,v5;key3=v6,v7,v8;”并且我只想提取v3,v4,v5怎么办?如果您使用
regex
模块而不是
re
,您可以使用
\G
匹配上一次匹配结束时的位置,从而使用
(?:\G,| key2=)\K[^,;]+/code>