Python 按分隔符拆分字符串,但不拆分此类分隔符的特定变体

Python split string on delimiter but not on a certain variation of such delimiter

我想根据分隔符'--'拆分Python中的一个长字符串,但如果'--'紧接着'fail'则不拆分。然后将删除的定界符“--”放回拆分数组中的结果字符串中。下面是一个例子。

我要:

"--conf example1 --conf curl --fail exception --env example2"

拆分后变为:

["--conf example1", "--conf curl --fail exception", "--env example2"]

您可以结合使用前瞻和前瞻:

\s+(?=--)(?!--fail)

因此,我们在这里用空格字符拆分,正前瞻性寻找双破折号,负前瞻性忽略 --fail:

>>> re.split(r'\s+(?=--)(?!--fail)', "--conf example1 --conf curl --fail exception --env example2")
['--conf example1', '--conf curl --fail exception', '--env example2']

注意这里--fail-foo也不会拆分。但是,您可以在负前瞻中添加一个空格字符:

\s+(?=--)(?!--fail\s)