跟进问题Python Regex - replace a string not located between two specific words 因为答案不完整。
给定字符串str,根据" ::"进行拆分,同时忽略" ::"介于"<"之间和">"括号。
预期投入和产出:
input a :: <<a :: b> c>::<a < a < b:: b> :: b> :: b> :: a
output [a , <<a :: b> c>,<a < a < b:: b> :: b> :: b> , a]
input a< b <c a>>
output [a< b <c a>>]
input a:<a b>
output [a:<a b>]
答案 0 :(得分:1)
这种情况只需要一个if else条件。如果输入字符串中存在任何::
子字符串,则会进行拆分,否则它将返回实际的输入字符串。
>>> def csplit(s):
if '::' in s:
return [i for i in regex.split(r'(<(?:(?R)|[^<>])*>)|::', s) if i and i != ' ']
else:
return s
>>> csplit('a :: <<a :: b> c>::<a < a < b:: b> :: b> :: b> :: a')
['a ', '<<a :: b> c>', '<a < a < b:: b> :: b> :: b>', ' a']
>>> csplit('a:<a b>')
'a:<a b>'
>>> csplit('a< b <c a>>')
'a< b <c a>>'