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

如何使用Python基于特定模式拆分字符串?

如何使用Python基于特定模式拆分字符串?,python,string,Python,String,我的字符串的格式为My_str=“2a1^ath67e22^yz2p0”。我想根据模式“^(任何字符)进行拆分,并获得[“2a1”、“67e22”、“2p0”]。模式也可能出现在字符串的前部或后部,例如^abc27e4或27c2^abc。我尝试了re.split((.*)^[a-z]{1100}(.*),my_str),但它只拆分其中一个模式。我在这里假设“^”后面出现的字符数不会超过100。简单的字符串操作不需要正则表达式,可以使用 my_list = my_str.split('^') 编

我的字符串的格式为
My_str=“2a1^ath67e22^yz2p0”
。我想根据模式
“^(任何字符)
进行拆分,并获得
[“2a1”、“67e22”、“2p0”]
。模式也可能出现在字符串的前部或后部,例如
^abc27e4
27c2^abc
。我尝试了
re.split((.*)^[a-z]{1100}(.*),my_str)
,但它只拆分其中一个模式。我在这里假设“^”后面出现的字符数不会超过100。

简单的字符串操作不需要正则表达式,可以使用

my_list = my_str.split('^')
编辑:抱歉,我刚才看到您不希望仅对
^
字符进行拆分,但也不希望对后面的字符串进行拆分。因此,您需要正则表达式

my_list = re.split('\^[a-z]+', my_str)
如果模式位于字符串的前面或末尾,这将创建一个空列表元素。您可以使用

my_list = list(filter(None, my_list))

如果您想使用正则表达式库,只需按“\^”拆分即可

re.split('\^', my_str)

# output : ['2a1', 'ath67e22', 'yz2p0']

我认为你的正则表达式比它需要的更复杂<代码>r“\^[a-z]+应该足够了。非常感谢!不知道这么简单哈哈