You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式:多匹配场景下如何匹配正向预查前的目标内容?

解决正则匹配DOB上一行内容的问题

你的正则(?P<name>a-zA-Z)(?=DOB)无法成功匹配的原因有两个:

  • a-zA-Z没有量词限定,只能匹配单个字母,无法匹配多字母组成的ijk;
  • 未考虑目标行与DOB之间的换行和空白字符,直接断言紧跟DOB不符合文本结构。

正确的正则表达式

使用正向预查匹配目标行,同时忽略中间的空白与换行:

(?P<name>[a-zA-Z]+)(?=\s*\n\s*DOB)

正则解释

  • [a-zA-Z]+:匹配一个或多个英文字母,对应你需要提取的ijk;
  • (?=\s*\n\s*DOB):正向预查断言,确保匹配内容后紧跟任意数量的空白字符(含空格、换行)、一个换行符、再任意空白字符,最后是DOB,以此跳过目标行和DOB之间的空行。

示例代码(Python)

import re

text = """abcd

defgh 

ijk

DOB"""

result = re.search(r'(?P<name>[a-zA-Z]+)(?=\s*\n\s*DOB)', text)
if result:
    print(result.group('name'))  # 输出:ijk

内容的提问来源于stack exchange,提问作者Akash Kp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:57:18