Python正则提取数字与指定语句间内容的问题求助
问题分析与解决方案
你的正则代码问题在于,\d+会匹配字符串中第一个出现的连续数字序列(示例里的2014),导致捕获的内容包含了数字到固定语句之间的所有冗余文本,而非目标的作者名。
要提取最后一个数字序列到固定语句之间的内容,只需调整正则表达式,先定位到最后一个数字序列的位置,再捕获后续目标内容:
import re test_string = "2014). Research in fields like human–computer interactio n1Andrew Burton-Jones was the accepting senior editor for this paper" # 正则逻辑:先匹配任意内容直到最后一组连续数字,再捕获数字到固定语句间的文本 pattern = r".*?\d+(.*?)(?= was the accepting senior editor for this paper)" match1 = re.search(pattern, test_string) if match1: author_name = match1.group(1).strip() print(author_name) # 输出: Andrew Burton-Jones
补充说明
.*?\d+:非贪婪匹配任意字符,直到遇到最后一组连续数字(避免停在第一个数字序列)(.*?):非贪婪捕获数字之后、固定语句之前的目标文本strip():去除捕获内容前后的空白或多余符号,适配多样的字符串格式
内容的提问来源于stack exchange,提问作者merkle
相关产品推荐
相关产品推荐

