Python:如何查找字符串中被'n'分隔的'b'的连续区间?
查找字符串中被'n'分隔的连续'b'区间的实现方法
方法一:手动遍历字符串
通过遍历字符串的每个字符,跟踪连续'b'的起始位置,当遇到非'b'字符时结束当前区间记录并保存,最后处理字符串末尾可能残留的连续'b':
s = "nnbbbnbbbnnnnbb" result = [] start_pos = None for idx, char in enumerate(s): if char == 'b': # 遇到第一个'b',记录起始位置 if start_pos is None: start_pos = idx else: # 遇到非'b'且之前在记录'b'区间,保存区间 if start_pos is not None: result.append((start_pos, idx)) start_pos = None # 处理字符串末尾的连续'b' if start_pos is not None: result.append((start_pos, len(s))) print(result) # 输出: [(2, 5), (6, 9), (13, 15)]
方法二:使用正则表达式
利用正则表达式匹配连续的'b'序列,通过re.finditer获取每个匹配的起始和结束索引,代码更简洁:
import re s = "nnbbbnbbbnnnnbb" result = [] # 匹配一个或多个连续的'b' for match in re.finditer(r'b+', s): result.append((match.start(), match.end())) print(result) # 输出: [(2, 5), (6, 9), (13, 15)]
两种方法都能得到目标结果:手动遍历适合理解底层逻辑,正则表达式则更高效简洁,可根据需求选择。
内容的提问来源于stack exchange,提问作者Python_Slayer
相关产品推荐
相关产品推荐

