我想根据分隔符“--”在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)
关于Python 在分隔符上分割字符串,但不在此类分隔符的某些变体上分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52882666/