【发布时间】:2018-02-23 02:19:33
【问题描述】:
我试图在一个字符上拆分多行字符串,但前提是该行不包含:。不幸的是,我看不到使用re.split() 对字符: 进行负面回溯的简单方法,因为: 可能出现在字符串前面的另一行中。
例如,我想在) 上拆分下面的字符串。
字符串:
Hello1 (
First : (),
Second )
Hello2 (
First
)
输出:
['Hello1 (\nFirst : (),\nSecond', 'Hello2 (\nFirst \n']
【问题讨论】:
-
我不确定是否有可能仅使用正则表达式来实现这一点。如果有人提出答案,我会感到惊讶。
-
( @AmitSingh ) 在某些正则表达式引擎中是可能的,例如在 PowerShell / .Net 中,它适用于
$string -split '(?m)(?<=^[^:]+)\)',但 Python 似乎不支持可变长度的后向匹配,这排除了这种方法。我想不出仅使用正则表达式的方法。 -
我可以使用的一种方法是用换行符
\n分割,然后在行字符串上使用正则表达式lookbehind,但这在我的情况下并不可靠 -
@TessellatingHeckler:在较新的
regex模块中无耻地使用了您的表达方式,但也提供了其他方式。
标签: python regex regex-negation regex-lookarounds