当前位置:  开发笔记 > 编程语言 > 正文

Python re不能拆分零宽度锚点?

如何解决《Pythonre不能拆分零宽度锚点?》经验,为你挑选了1个好方法。

根据re.split:

请注意,拆分永远不会在空模式匹配上拆分字符串.例如:

>>> re.split('x*', 'foo')
['foo']
>>> re.split("(?m)^$", "foo\n\nbar\n")
['foo\n\nbar\n']

怎么用re.findall呢?(而不是专注于分隔符,专注于你想要的项目.)

>>> import re
>>> s = 'PythonCookbookListOfContents'
>>> re.findall('[A-Z][a-z]+', s)
['Python', 'Cookbook', 'List', 'Of', 'Contents']

UPDATE

使用regex模块(替代正则表达式模块,替换re),可以拆分零宽度匹配:

>>> import regex
>>> s = 'PythonCookbookListOfContents'
>>> regex.split('(?<=[a-z])(?=[A-Z])', s, flags=regex.VERSION1)
['Python', 'Cookbook', 'List', 'Of', 'Contents']

注意:指定regex.VERSION1标志以启用零拆分长度匹配行为.



1> falsetru..:

根据re.split:

请注意,拆分永远不会在空模式匹配上拆分字符串.例如:

>>> re.split('x*', 'foo')
['foo']
>>> re.split("(?m)^$", "foo\n\nbar\n")
['foo\n\nbar\n']

怎么用re.findall呢?(而不是专注于分隔符,专注于你想要的项目.)

>>> import re
>>> s = 'PythonCookbookListOfContents'
>>> re.findall('[A-Z][a-z]+', s)
['Python', 'Cookbook', 'List', 'Of', 'Contents']

UPDATE

使用regex模块(替代正则表达式模块,替换re),可以拆分零宽度匹配:

>>> import regex
>>> s = 'PythonCookbookListOfContents'
>>> regex.split('(?<=[a-z])(?=[A-Z])', s, flags=regex.VERSION1)
['Python', 'Cookbook', 'List', 'Of', 'Contents']

注意:指定regex.VERSION1标志以启用零拆分长度匹配行为.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有