我有一些字符串的格式
lorem ipsum, dolor sit - amet, consectetur : adipiscing elit. Praesent vitae orc
我希望它在每个分隔符的第一个实例中被拆分,返回
['lorem ipsum',
'dolor sit',
'amet, consectetur',
'adipiscing elit. Praesent vitae orc']
现在我的输出是
['lorem ipsum',
'dolor sit',
'amet',
'consectetur ',
'adipiscing elit. Praesent vitae orc']
现在我使用的是re.split(', | - |: ', txt)
,但它将字符串中的所有实例分开。关于如何实现所需输出的任何建议
编辑:
我意识到我的问题不清楚,所以举个例子,如果字符串是
"abc: def: ijk, lmno: pqr - stu, wx"
输出应该是
["abc",
"def: ijk",
"lmno: pqr",
"stu, wxy"]
而不是
["abc",
"def",
"ijk",
"lmno",
"pqr",
"stu",
"wxy"]
您可以使用一个小类来计算替换:
产生
如果所有分隔符必须至少出现一次,则可以使用4个捕获组,并使用3个选项中的1个(已匹配的选项除外)进行反向引用,而不是使用拆分
图案会匹配的
^
字符串的开头(.*?)
组1,尽可能少地匹配(, | - |: )
组2,匹配列出的任何(.*?)
组3,尽可能匹配(?!\2)
负前瞻,断言右侧的内容与组2中的内容不匹配(从两个有效选项中选择一个)(, | - |: )
组4,匹配列出的任何(.*?)
组5,尽可能匹配(?!\2|\4)
负前瞻,断言右侧的内容不是组2或组4中匹配的内容(选择左侧唯一有效的选项)(, | - |: )
组6,匹配列出的任何(.*)
组7,尽可能匹配任何字符Regex demo
比如说
输出
参见Python demo1和demo2
值得思考的是,不确定这是否是一个有价值的答案,但可能您可以使用
regex
而不是re
模块来利用具有非固定宽度的负向查找功能。例如:在Python中:
结果:
相关问题 更多 >
编程相关推荐