首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过正则表达式模式拆分一个字符串,并捕获模式内容?

如何通过正则表达式模式拆分一个字符串,并捕获模式内容?
EN

Stack Overflow用户
提问于 2019-06-20 03:22:51
回答 2查看 52关注 0票数 1

我想拆分包含数字的文本

代码语言:javascript
复制
text = "bla bla 1 bla bla bla 142 bla bla (234.22)"

并希望在每个数字之前和之后添加一个'\n'

代码语言:javascript
复制
> "bla bla \n1\n bla bla bla \n142\n bla bla (234.22)"

下面的函数给出了子字符串,但它丢弃了模式,即数字。用python中包含模式的东西替换模式的最好方法是什么?

代码语言:javascript
复制
re.split(' [0123456789]+ ', text)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-20 03:25:27

使用

代码语言:javascript
复制
s = re.sub(r' \d+ ', '\n\\g<0>\n', s)

请参阅regex demo

要仅将单独的数字替换为完整的单词,请使用

代码语言:javascript
复制
s = re.sub(r'\b\d+\b', '\n\\g<0>\n', s)

如果要匹配用空格括起来的数字,请仅使用以下任一选项

代码语言:javascript
复制
re.sub(r'(?<!\S)\d+(?!\S)', '\n\\g<0>\n', s) # also at the start/end of string
re.sub(r'(?<=\s)\d+(?=\s)', '\n\\g<0>\n', s) # only between whitespaces

实际上,可以将替换指定为'\n\g<0>\n',因为\g是一个未定义的转义序列,在本例中,反斜杠将被视为文字字符,并将保留在结果字符串中以形成正则反向引用构造。

Python demo

代码语言:javascript
复制
import re
s = "bla bla 1 bla bla bla 142 bla bla"
s = re.sub(r'\b\d+\b', '\n\\g<0>\n', s)
print(s) # => bla bla \n1\n bla bla bla \n142\n bla bla
票数 3
EN

Stack Overflow用户

发布于 2019-06-20 03:31:52

试试这段代码!!这可能会有帮助!

代码语言:javascript
复制
import re
text = "bla bla 1 bla bla bla 142 bla bla"
replaced = re.sub('([0-9]+)', r'\n\1\n',text)
print(replaced)

Output:  'bla bla \n1\n bla bla bla \n142\n bla bla' 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56674550

复制
相关文章

相似问题

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