问题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>]
最佳答案
在这种情况下,仅需要其他条件。如果输入字符串中存在任何::
子字符串,则会进行拆分,否则它将返回实际的输入字符串。
>>> 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>>'