首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找开始和停止之间的所有重复字符串,并使用分隔符。

查找开始和停止之间的所有重复字符串,并使用分隔符。
EN

Stack Overflow用户
提问于 2017-11-06 00:19:40
回答 4查看 130关注 0票数 1

我试图从这样的字符串中获取一个或多个子字符串:

“表1:顺1:顺2:顺N:尾”

“param1:顺服1:结束”

或由":“分隔并由"theSTART:”和":theEND“分隔的任意数量的参数。我使用的是Python3正则表达式,但找不到合适的模式来匹配可变数量的项:

代码语言:javascript
复制
r"theSTART:((?:\w*)+):((?:[^:])*):((?:\w)+):theEND"

只适用于3项。如果我试着:

代码语言:javascript
复制
r"theSTART:((?:\w*)+):(((?:[^:])*):)+((?:\w)+):theEND"

不像预期的那样起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-06 21:10:38

如果您想使用正则表达式而不是拆分,re.findall可能是一个解决方案。findall返回一个模式的所有出现的列表。

代码语言:javascript
复制
re.findall(r":(?:(\w+)(?=:))", r"theSTART:param1:param2:paramN:theEND")

返回列表['param1', 'param2', 'paramN']

您可能找不到(或不能)匹配任意数量的参数的模式。根据Python,如果一个组多次匹配,那么关于模块文档只是最后一个可访问的匹配。

票数 0
EN

Stack Overflow用户

发布于 2017-11-06 00:39:26

那么,如果您的数据总是以'theStart‘开头,以'theEnd’结尾,并且所有字段都是分隔的,那么为什么还要为这个问题愚蠢地使用正则表达式呢?为什么不只是:

代码语言:javascript
复制
def delimited_items(the_string):
  items = the_string.split(':')
  return items[1:-1]
票数 3
EN

Stack Overflow用户

发布于 2017-11-06 20:27:05

使用“.”捕获所有内容。然后在分隔符上拆分应该会简化一些事情。

代码语言:javascript
复制
params = re.match(r'theSTART:(.+):theEND', a).group(1).split(':')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47128060

复制
相关文章

相似问题

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