如何使用正则表达式提取起始关键词Feedback:到下一个大写单词间的文本
可行的正则实现方案
核心逻辑
使用非贪婪匹配+正向预查实现边界截断:
- 先匹配起始标识
Feedback: - 捕获中间内容时用非贪婪匹配避免过度捕获
- 用正向预查判断下一个首字母大写的单词位置,匹配到该位置就停止,且不会把大写单词计入结果
完整代码
import re a = "This is a Feedback: Note: We have written this Feedback: The product is good. Very output is valid." # 正则中的捕获组会直接被findall返回,预查部分不会计入结果 result_list = re.findall(r"Feedback:\s*(.*?)\s*(?=[A-Z])", a) # 过滤掉空匹配(第一个Feedback后直接接大写Note,捕获内容为空) valid_result = [item for item in result_list if item] print(valid_result[0])
输出结果
The product is good.
正则说明
Feedback::精准匹配起始关键词\s*:匹配关键词后方任意数量的空白字符,自动修剪内容前后的多余空格(.*?):非贪婪匹配任意字符,作为捕获组返回需要提取的内容(?=[A-Z]):正向预查,匹配到下一个大写英文字母开头的内容就停止,不会消耗该大写字母
内容的提问来源于stack exchange,提问作者user17142920
相关产品推荐
相关产品推荐

