关于正则表达式获取捕获组的问题

我现在有这样一个字符串5900A7395900A7545900A414,我想把这个字符串分为三个单独的字符串5900A739,5900A754,5900A414如何使用捕获组才能实现上面的需求?注意,这只是一个例子,实际情况比这个要复杂,相同字符串的长度是不固定的。例如:上面例子中相同字符串是5900A,也有可能是5900A7,后面不同字符串的长度也不固定。请问这种要如何截取出单独的字符串?
自己尝试了捕获组,但是都只能捕获固定长度的字符。先提前谢谢大家了。

阅读 3.6k
2 个回答

感觉不用正则,直接找那个共同部分切割,然后看看结果在处理下就行了吧...

string = "5900A7395900A7545900A414"

tag = '59'

tmp_list = string.split(tag)

result = [''.join([tag, i]) for i in tmp_list if i != '']
print(result)    # ['5900A739', '5900A754', '5900A414']

正则的话, 我在程序员工具箱-正则测试这个网站测试没问题,改写到代码结果出现个数字 - - 不知道为啥 59.*?((?!59).)*测试正则条件,你可以自己看看改改

import re
string = "5900A7395900A7545900A414"
pattern = re.compile(r'(59.*?((?!59).)*)')
print(pattern.findall(string))
# [('5900A739', '9'), ('5900A754', '4'), ('5900A414', '4')]

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题