如何获取字符串中首次出现的两个指定字符间的内容?(优先非正则)
在Python中获取字符串两个首次出现字符间的内容(避免正则)
要实现需求里的功能——提取字符串中首次出现的两个指定字符之间的所有内容,完全可以不用正则,靠字符串的索引和切片就能搞定,下面是具体实现:
实现思路
- 找到起始字符在字符串中第一次出现的位置
- 从起始位置的下一位开始,找到结束字符第一次出现的位置
- 通过字符串切片提取两个位置之间的内容
- 处理边界情况(比如字符不存在、起始位置晚于结束位置等)
代码实现
独立函数版本
def get_between(s: str, start_char: str, end_char: str) -> str: try: start_idx = s.index(start_char) # 从起始字符的下一位开始找结束字符 end_idx = s.index(end_char, start_idx + 1) return s[start_idx + 1 : end_idx + 1] except ValueError: # 起始或结束字符不存在时返回空字符串 return "" # 测试示例 string = "aabcdefgg" print(get_between(string, "a", "g")) # 输出: abcdefg
字符串方法扩展版本(和示例调用方式一致)
如果想要像示例那样直接用string.inbetween()的调用方式,可以给str类添加自定义方法:
def str_inbetween(self, start_char: str, end_char: str) -> str: try: start_idx = self.index(start_char) end_idx = self.index(end_char, start_idx + 1) return self[start_idx + 1 : end_idx + 1] except ValueError: return "" # 给str类绑定方法 str.inbetween = str_inbetween # 测试示例 string = "aabcdefgg" print(string.inbetween("a", "g")) # 输出: abcdefg
边界情况说明
- 如果起始字符不存在,或者结束字符在起始字符之后不存在,函数会返回空字符串
- 如果起始字符的位置晚于结束字符的位置(比如起始在结束之后才出现),同样返回空字符串
内容的提问来源于stack exchange,提问作者benz
相关产品推荐
相关产品推荐

