使用正则表达式捕获指定模式最后一次出现后的行尾文本
解决正则提取最后一次指定前缀后的文本需求
没问题,我来帮你搞定这个正则提取的需求!要捕获最后一次出现「四位数字 + 空格 + 短横线 + 空格」模式后到行尾的文本,可以用下面的方案:
核心正则表达式
.*\d{4}\s-\s(.*)$
正则各部分解释
.*:贪婪匹配任意字符(除换行符),目的是定位到最后一次出现目标前缀的位置(贪婪特性会让它尽可能往后匹配,刚好命中最后一个目标前缀)\d{4}:精准匹配4位数字\s-\s:匹配「空格 + 短横线 + 空格」的固定格式(如果你的场景里空格可能是多个或制表符,把\s换成\s+就能兼容多空格/制表符的情况)(.*)$:捕获组,专门抓取目标前缀之后到行尾的所有内容($确保匹配到行的结束位置,不会漏掉末尾内容)
代码示例(以Python为例)
import re # 你的目标文本 target_text = "2222-6453-ABC-1234 - 需捕获的文本 ABCD - 7654 - 需捕获的文本 7GF2-0000 - ABC - 4444 - 需捕获的文本 87628734878764-0631 - 需捕获的文本 ab2d6m" # 执行正则匹配 match_result = re.search(r".*\d{4}\s-\s(.*)$", target_text) if match_result: # 提取捕获到的内容 captured_content = match_result.group(1) print("捕获到的文本:", captured_content)
运行这段代码后,输出结果为:
捕获到的文本: 需捕获的文本 87628734878764-0631 - 需捕获的文本 ab2d6m
完全符合你要提取最后一次指定前缀后内容的需求~
内容的提问来源于stack exchange,提问作者webworm
相关产品推荐
相关产品推荐

