如何从给定文本中提取目标内容?已尝试split相关代码实现
解决方案:提取目标文本片段
我来帮你搞定这个字符串提取的问题!看你的需求是从带格式标记的原始字符串里,过滤掉多余的类型前缀(比如n、v、a)和带%的方括号内容,只保留[xxx]及其对应的描述文本对吧?用正则表达式就能轻松实现,给你写个Python代码方案:
代码实现
import re def extract_target_content(raw_string): # 正则匹配规则:精准定位并捕捉我们需要的核心片段 match_pattern = r'\w+\s+\[\w+%.*?\]\s+(\[.*?\].*?)(?=\s+[\w]\s+\[|$)' # 找出所有符合规则的目标片段 target_segments = re.findall(match_pattern, raw_string, re.DOTALL) # 拼接成最终结果,同时清理片段前后的冗余空格 return ' '.join(seg.strip() for seg in target_segments) # 测试你的输入内容 input_str = 'n [time%1:28:03::] [time] clock time n [year%1:28:01::] [year] twelvemonth, yr v [lily%1:20:00::] [lily] flower v [man%1:05:01::] [man] homo, human being, human a [government%1:14:00::] [government] authorities, regime' output_result = extract_target_content(input_str) print(output_result)
代码逻辑说明
- 正则表达式
r'\w+\s+\[\w+%.*?\]\s+(\[.*?\].*?)(?=\s+[\w]\s+\[|$)'拆解:\w+\s+:匹配开头的类型标记(如n、v、a)和后续空格\[\w+%.*?\]\s+:匹配带%的方括号冗余内容(如[time%1:28:03::])和后续空格(\[.*?\].*?):核心捕捉组,提取从[xxx]开始到下一个条目开头/字符串结尾的所有内容(?=\s+[\w]\s+\[|$):正向预查,确保捕捉范围不会越界到下一个条目
re.DOTALL参数让正则可以处理带换行的输入(如果你的原始字符串有换行也能兼容)- 最后通过
strip()清理每个片段的前后空格,再拼接成你想要的结果
运行这段代码后,输出完全符合你的预期:
[time] clock time [year] twelvemonth, yr [lily] flower [man] homo, human being, human [government] authorities, regime
内容的提问来源于stack exchange,提问作者Cyley Simon
相关产品推荐
相关产品推荐

