如何仅匹配“A = *”行前的换行符?正则表达式技术求助
正则匹配“A = *”行前的换行符(单组匹配)
你的文件内容示例:
A = 1 B = 2 C = 3 A = 10 B = 20 C = 30
完全可以用后向查找结合断言实现,不过更简洁的方式是用正向先行断言直接匹配目标换行符,且无需额外分组,匹配结果就是你要的换行符本身:
方案1:正向先行断言(直接匹配目标换行符)
正则表达式:
\n(?=A = )
这个表达式会匹配所有后面紧跟“A = ”开头行的换行符,也就是第二个“A = 10”行上方的那个换行符,完全符合你的需求,且匹配结果就是换行符本身,不需要分组提取。
方案2:后向查找实现
如果一定要用后向查找,可以结合后向肯定查找和正向断言,确保匹配的换行符前面有非空内容(避免匹配文件开头的空行,当然你的场景里第一个A行上方没有换行符,也不会触发):
(?<=\S.*)\n(?=A = )
这里(?<=\S.*)是后向查找,确保换行符前面有至少一个非空白字符加任意内容,再结合(?=A = )正向断言限定后面是“A = ”行,最终匹配的还是目标换行符。
两种方案都能直接得到你需要的换行符,无需访问多组,且第一个“A = 1”行上方无换行符,不会被匹配到。
内容的提问来源于stack exchange,提问作者Kevin_ALA
相关产品推荐
相关产品推荐

