正则Lookbehind与Lookahead组合用法求助及匹配需求
正则表达式前瞻/后瞻断言组合方案
需求1:匹配最后一行的纯数字(单独提取100、380、236)
使用正则:\b\d+(?=(?:/\d+)* PCS\s*$)
规则解释
\b\d+:匹配连续纯数字序列,\b确保数字不会和非数字字符粘连(?=(?:/\d+)* PCS\s*$):正向前瞻断言,限定当前数字后续必须是「任意个/数字组合」+「PCS」+「行尾」,精准锁定最后一行的数字,排除其他行干扰
匹配结果:单独捕获到 100、380、236 三个结果。
需求2:匹配第一行按斜杠拆分的纯数字(单独提取544、555、716)
使用正则:(?<=^|/)\d+(?=/|\s*$)
规则解释
(?<=^|/):反向后瞻断言,限定数字前置内容必须是「行开头」或「斜杠」,确保只匹配第一行中被斜杠分隔的数字\d+:匹配连续纯数字序列(?=/|\s*$):正向前瞻断言,限定数字后续内容必须是「斜杠」或「行尾」,排除其他行的非数字内容
匹配结果:单独捕获到 544、555、716 三个结果。
前瞻与后瞻的组合逻辑
后瞻断言((?<=...))负责校验匹配内容的左侧前置条件,前瞻断言((?=...))负责校验匹配内容的右侧后置条件,两者结合可精准圈定目标内容的上下文范围,过滤掉不符合要求的无关内容(比如第二行的Black类非数字文本)。
内容的提问来源于stack exchange,提问作者ddixchos
相关产品推荐
相关产品推荐

