首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式之前的Python正则表达式拆分

正则表达式之前的Python正则表达式拆分
EN

Stack Overflow用户
提问于 2015-11-22 18:11:25
回答 1查看 367关注 0票数 1

以下是问题所在:

string = 'abcdefghijklmn‘

desired_result = 'abcedfg‘,’abcedfg‘

我正在寻找"abc“的正则表达式: re.compile(r"abc"),然后在这个正则表达式的基础上分裂。这就给出了:'abc','defghijklmn op','abc','dfg‘

我能调整我的正则表达式以达到预期的分割吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-22 18:16:37

您可以使用与此类似的正则表达式:

代码语言:javascript
复制
abc[^a]*(?:a(?!bc)[^a]*)*

请参阅regex演示

它将收集以abc开头的所有子字符串,直到第一个abc met或字符串结束为止。

Regex细分:

  • abc - match abc
  • [^a]* -匹配0或多个字符( a除外)
  • (?:a(?!bc)[^a]*)* -匹配(但不捕获)0或多个序列
    • a(?!bc) -匹配与bc不匹配的a (因为我们要匹配到abc)
    • [^a]* -匹配0或多个字符( a除外)

它类似于abc.*?(?=$|abc)捕获的内容,但不存在与延迟点匹配相关的问题。

Python代码演示

代码语言:javascript
复制
p = re.compile(r'abc[^a]*(?:a(?!bc)[^a]*)*')
test_str = "abcdefghijklmn opabcedfg"
print(p.findall(test_str))

结果:['abcdefghijklmn op', 'abcedfg']

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

https://stackoverflow.com/questions/33858280

复制
相关文章

相似问题

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