我有以下输入:
"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]]]']我该怎么做呢?
发布于 2014-01-30 00:18:58
您可以做的是在空格上拆分它,然后遍历每个子字符串,并检查它是否以某个特殊分隔符开头。如果是,则开始一个新字符串,并追加后续字符串,直到到达末尾分隔符。然后删除这些子字符串并将其替换为新的子字符串。
发布于 2014-01-30 00:31:38
我想你想要的是
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]]]']但是请注意,这并不完全是您所描述的,而是与您的示例相匹配的。当空格前面是]或后面是$或[时,您似乎想要在空格上拆分。
发布于 2014-01-30 00:36:23
试试re.split和一个能让人痛哭的正则表达式
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]]]")https://stackoverflow.com/questions/21436443
复制相似问题