Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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/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_String_Split_Quotes - Fatal编程技术网

Python 正则表达式拆分字符串,不考虑引号中的空格

Python 正则表达式拆分字符串,不考虑引号中的空格,python,regex,string,split,quotes,Python,Regex,String,Split,Quotes,我想分割字符串,忽略“”之间的空格。我正在使用下面的正则表达式来拆分行 string = 'protein219 Info=Acidfast Name="Mycobacterium smegmatis" pcp=36789' 结果是 mystring = [s for s in re.split("( |\\\".*?\\\"|'.*?')", mystring) if s.strip()] 预期产出: ['protein219', 'Info=Acidfast', 'Name=' ,

我想分割字符串,忽略“”之间的空格。我正在使用下面的正则表达式来拆分行

string = 'protein219 Info=Acidfast Name="Mycobacterium   smegmatis" pcp=36789'
结果是

mystring = [s for s in re.split("( |\\\".*?\\\"|'.*?')", mystring) if s.strip()] 
预期产出:

['protein219', 'Info=Acidfast', 'Name=' , '"Mycobacterium  smegmatis"', 'pcp=','36789']
请提供您的建议

不要为此使用
re.split()

['protein219', 'Info=Acidfast', 'Name="Mycobacterium   smegmatis"',' pcp=36789']
说明:


你需要的每件东西要么没有空格,要么引号之间有空格:

(?:       # Start of non-capturing group
 "[^"]*"  # Either match a quoted string
|         # or
 [^\s"]   # anything besides spaces or quotes
)+        # End of group, match at least once
将匹配
Name=“耻垢分枝杆菌”

将匹配所有其他的。合并:

re.findall(r'[^\s]+', string)

(?:表示非捕获组,使结果成为一个简单的列表。)

@Bergi:我不这么认为,因为so想捕获“与它一起”之前的单词,这表明它非常有效
re.findall(r'[^\s]*".*"', string)
re.findall(r'[^\s]+', string)
re.findall(r'(?:[^\s]*".*")|(?:[^\s]+)', string)