拆分字符串并仍然保留分隔符
Split string and still keep the delimiter
我有一串这样的代码:
replace [IntType]
import TYPE [libc_to_basic_type_entry*]
现在我想使用 Python 正则表达式将它们拆分成数组,如下所示:
["replace", "[", "IntType", "]"]
["import", "TYPE", "[", "libc_to_basic_type_entry, "*", "]"]
最好的方法是什么?谢谢
起初,我尝试做简单的 string.split("[")
并继续将字符串循环到 split
和其他字符。但是我发现这种方式并不有效,所以我想通过正则表达式寻求帮助。
您可以使用这个正则表达式:
\s*(\w+|[^\w\s])\s*
正则表达式详细信息:
\s*
:匹配0个或多个空格
(
: 开始捕获组
\w+
:匹配1+个单词字符
|
: 或
[^\w\s]
: 匹配不是单词或空白字符的字符
)
: 结束捕获组
\s*
:匹配0个或多个空格
代码:
s = 'import TYPE [libc_to_basic_type_entry*]'
print (re.findall(r'\s*(\w+|[^\w\s])\s*', s))
输出:
['import', 'TYPE', '[', 'libc_to_basic_type_entry', '*', ']']
我有一串这样的代码:
replace [IntType]
import TYPE [libc_to_basic_type_entry*]
现在我想使用 Python 正则表达式将它们拆分成数组,如下所示:
["replace", "[", "IntType", "]"]
["import", "TYPE", "[", "libc_to_basic_type_entry, "*", "]"]
最好的方法是什么?谢谢
起初,我尝试做简单的 string.split("[")
并继续将字符串循环到 split
和其他字符。但是我发现这种方式并不有效,所以我想通过正则表达式寻求帮助。
您可以使用这个正则表达式:
\s*(\w+|[^\w\s])\s*
正则表达式详细信息:
\s*
:匹配0个或多个空格(
: 开始捕获组\w+
:匹配1+个单词字符|
: 或[^\w\s]
: 匹配不是单词或空白字符的字符
)
: 结束捕获组\s*
:匹配0个或多个空格
代码:
s = 'import TYPE [libc_to_basic_type_entry*]'
print (re.findall(r'\s*(\w+|[^\w\s])\s*', s))
输出:
['import', 'TYPE', '[', 'libc_to_basic_type_entry', '*', ']']