Mai*_*iii 4 python regex string split
假设我有一个这样的字符串
string = 'rename_file_1122--23-_12'
Run Code Online (Sandbox Code Playgroud)
有没有办法像那样分割这个
parts = ['rename','_','file','_','1122','--','23','-_','12']
Run Code Online (Sandbox Code Playgroud)
我尝试使用正则表达式但它不起作用
import re
name_parts = re.findall('\d+|\D+|\w+|\W+', string)
Run Code Online (Sandbox Code Playgroud)
结果是:
['rename_file_', '1122', '--', '23', '-_', '12']
Run Code Online (Sandbox Code Playgroud)
########## 第二部分
如果我有这样的字符串:
string2 = 'Hello_-Marco5__-'
Run Code Online (Sandbox Code Playgroud)
我需要使用什么条件来获取 : ['Hello','_-','Marco','5','__-']. 我的目标是拆分字符串 y 组字母、数字和“-_”。
谢谢你的回答
您可以使用
re.findall(r'[^\W_]+|[\W_]+', string)
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示。
正则表达式详细信息:
[^\W_]+- 除了非单词和_字符之外的一个或多个字符(因此,一个或多个字母或数字)| - 或者[\W_]+- 一个或多个非单词和/或_字符。看一个Python 演示:
import re
string = 'rename_file_1122--23-_12'
name_parts = re.findall(r'[^\W_]+|[\W_]+', string)
print(name_parts)
# => ['rename', '_', 'file', '_', '1122', '--', '23', '-_', '12']
Run Code Online (Sandbox Code Playgroud)