以下是问题所在:
string = 'abcdefghijklmn‘
desired_result = 'abcedfg‘,’abcedfg‘
我正在寻找"abc“的正则表达式: re.compile(r"abc"),然后在这个正则表达式的基础上分裂。这就给出了:'abc','defghijklmn op','abc','dfg‘
我能调整我的正则表达式以达到预期的分割吗?
谢谢!
发布于 2015-11-22 18:16:37
您可以使用与此类似的正则表达式:
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代码演示
p = re.compile(r'abc[^a]*(?:a(?!bc)[^a]*)*')
test_str = "abcdefghijklmn opabcedfg"
print(p.findall(test_str))结果:['abcdefghijklmn op', 'abcedfg']
https://stackoverflow.com/questions/33858280
复制相似问题