Python:使用多个字符拆分字符串

2024-09-28 21:05:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下意见:

"auth-server $na me$ $1n ame$ [position [$pr io$]] xxxx [match-fqdn [[$fq dn$] [all]]]"

我需要用$<>作为分隔符将它们存储在一个列表中。你知道吗

预期产量:

['auth-server', '$na me$', '$1n ame$', '[position', '[$pr io$]]', 'xxxx', '[match-fqdn', '[[$fq dn$]', '[all]]]']

我该怎么做?你知道吗


Tags: ioauthservermatchpositionprall意见
3条回答

我想你想要的是

import re
re.split(r"(?<=\]) | (?=\$|\[)", "auth-server $na me$ $1n ame$ [position [$pr io$]] xxxx [match-fqdn [[$fq dn$] [all]]]")

这就产生了

['auth-server', '$na me$', '$1n ame$', '[position', '[$pr io$]]', 'xxxx', '[match-fqdn', '[[$fq dn$]', '[all]]]']

但是请注意,这并不是您描述的内容,而是与您的示例相匹配的内容。似乎您希望在前面有]或后面有$[的空间上拆分。你知道吗

你能做的是在空格上拆分它,然后遍历每个子字符串,检查它是否以一个特殊的分隔符开始。如果是,则启动一个新字符串并附加后续字符串,直到到达结束分隔符。然后移除这些子字符串并用新的子字符串替换它们。你知道吗

试试看重新拆分一个让人热血沸腾的正则表达式

import re
print re.split(r'(\$[^\$]+\$|\[\S+([^\]]+\]\])?|[-0-9a-zA-Z]+)',"auth-server $na me$ $1n ame$ [position [$pr io$]] xxxx [match-fqdn [[$fq dn$] [all]]]")

相关问题 更多 >