首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何拆分字符串并将分隔符保存在其中

如何拆分字符串并将分隔符保存在其中
EN

Stack Overflow用户
提问于 2019-04-26 23:35:01
回答 3查看 90关注 0票数 1

@edzech问,如何才能将一根绳子分开,并将分隔符保存在其中。他的问题是标记为复本,而这里的方法与“重复”不同。

我们希望拆分一个字符串,但是通过在其中保留分隔符,我们不希望分隔它们。简而言之,对于<abc>d<e><f>ghi<j>,我们希望:

代码语言:javascript
运行
复制
['<abc>', 'd', '<e>', '<f>', 'ghi', '<j>']

而不是:

代码语言:javascript
运行
复制
['<', 'abc', '>' 'd', '<', 'e', '>', '<', 'f', '>', 'ghi', '<', 'j', '>']

使用split没有帮助,因为它将根据分隔符进行拆分。我们想把它与它的内容联系起来。

EN

Stack Overflow用户

发布于 2019-04-27 00:59:02

我相信你可以在这个正则表达式中使用拆分

代码语言:javascript
运行
复制
(?<=>)(?=[a-z<])|(?<=[a-z>])(?=<)

https://regex101.com/r/WNy5n9/1

它不过是两个选项的配对查找/提前断言。

扩容

代码语言:javascript
运行
复制
   (?<= > )                      # Behind a  >
   (?= [a-z<] )                  # Ahead either a-z or <
|                              # or,
   (?<= [a-z>] )                 # Behind either a-z or >
   (?= < )                       # Ahead a  <

更新

请注意,在版本3.7分裂之前的Python版本中

在一个空的匹配没有被正确地处理。

想必他们无法分辨出空的

字符串和/或如何在零宽度匹配上完成凸点。

好像他们把头从a**中拉出来,现在是3.7版,

所以给你..。

Demo

3.7.3版

代码语言:javascript
运行
复制
>>> import sys
>>> print( sys.version )
3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)]

代码

代码语言:javascript
运行
复制
>>> import re
>>> rx = re.compile( r"(?<=>)(?=[a-z<])|(?<=[a-z>])(?=<)" )
>>> s = "<abc>d<e><f>ghi<j>test><g>"
>>> x =  re.split( rx, s )
>>> print ( x )
['<abc>', 'd', '<e>', '<f>', 'ghi', '<j>', 'test>', '<g>']
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55876007

复制
相关文章

相似问题

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