首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结果的re.split和分隔符

结果的re.split和分隔符
EN

Stack Overflow用户
提问于 2013-04-25 03:53:55
回答 1查看 112关注 0票数 3

如何在re.split结果中包含分隔符?

例如,我有一个文本

代码语言:javascript
复制
Bla bla lbaa dsad asd as. Asd qe as!  ASDadf asd! Dsss dwq. Dkmef? 

RegExr

代码语言:javascript
复制
re.split('\s*([\.!\?]+)\s*', data)

并且re.split返回这个

代码语言:javascript
复制
['Bla bla lbaa dsad asd as', '.', 'Asd qe as', '!', 'ASDadf asd', '!', 'Dsss dwq', '.', 'Dkmef', '?', '']

虽然我想要这个

代码语言:javascript
复制
['Bla bla lbaa dsad asd as.', 'Asd qe as!', 'ASDadf asd!', 'Dsss dwq.']

我怎么才能在没有钉子的情况下做到呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-25 03:57:38

您可以尝试按前面有标点符号的空格进行拆分:

代码语言:javascript
复制
In [9]: re.split(r'(?<=[\.!\?])\s+', data)
Out[9]:
['Bla bla lbaa dsad asd as.',
 'Asd qe as!',
 ' ASDadf asd!',
 'Dsss dwq.',
 'Dkmef?']

来自documentation for the re module的解释

(?<=...)

如果字符串中的当前位置前面是在当前位置结束的...匹配,则匹配。这被称为正向回溯断言。(?<=abc)def将在abcdef中找到匹配项,因为lookbehind将备份3个字符,并检查包含的模式是否匹配。所包含的模式只能与固定长度的字符串匹配,这意味着允许使用abca|b,但不允许使用a*a{3,4}

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16200961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档