相关疑难解决方法(0)

Python正则表达式:拆分模式匹配,这是一个空字符串

使用该re模块,似乎我无法拆分空字符串的模式匹配:

>>> re.split(r'(?<!foo)(?=bar)', 'foobarbarbazbar')
['foobarbarbazbar']
Run Code Online (Sandbox Code Playgroud)

换句话说,即使找到匹配项,如果它是空字符串,甚至re.split也不能拆分字符串.

这些文档re.split似乎支持我的结果.

对于这种特殊情况,"解决方法"很容易找到:

>>> re.sub(r'(?<!foo)(?=bar)', 'qux', 'foobarbarbazbar').split('qux')
['foobar', 'barbaz', 'bar']
Run Code Online (Sandbox Code Playgroud)

但这是一种容易出错的方法,因为那时我必须要注意已经包含我正在拆分的子字符串的字符串:

>>> re.sub(r'(?<!foo)(?=bar)', 'qux', 'foobarbarquxbar').split('qux')
['foobar', 'bar', '', 'bar']
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来分割与re模块的空模式匹配?另外,为什么re.split不允许我首先这样做呢?我知道其他分裂算法可以与正则表达式一起使用; 例如,我可以使用JavaScript的内置功能完成此操作String.prototype.split().

python regex string split

10
推荐指数
1
解决办法
4519
查看次数

标签 统计

python ×1

regex ×1

split ×1

string ×1