2016-11-27 61 views
1

匹配模式和最后一个空行:正则表达式来在我有正则表达式匹配<a href="https://regex101.com/r/GEzzNo/1" rel="nofollow noreferrer">pattern like this</a>文件

\AX.*(?:\r?\n[KLM].*)*\r?\nZ.*(?:\r?\nX.*(?:\r?\n[KLM].*)*\r?\nZ.*)*\z 

有什么办法,我可以用一个额外的行更新相同的正则表达式匹配相同的模式?

A---Header 
    K 
    L 
    M 
    Z---Footer 
--> empty line. No characters and spaces are there 

我已经尝试过做一些谷歌选项..但这是行不通的。

任何建议

谢谢!

+0

[用'$'替换'\ z'](https://regex101.com/r/GEzzNo/3)。或者使用['\ r?\ n \ z'](https://regex101.com/r/GEzzNo/2)。 –

+0

不工作!检查这个https://regex101.com/r/6Egh7C/1 – kelly

+0

你的意思是可以有*许多*空行?只需在'\ z'前加'(?:\ r?\ n)*'即可。 –

回答

0

\z锚点匹配在字符串的最后。要匹配可以与0个或多个空行结束的字符串,加(?:\r?\n)*\z

\AX.*(?:\r?\n[KLM].*)*\r?\nZ.*(?:\r?\nX.*(?:\r?\n[KLM].*)*\r?\nZ.*)*(?:\r?\n)*\z 
                    ^^^^^^^^^^ 

regex demo

如果字符串可以在年底\n符号,你可能只是更换\z$(因为$可以在字符串中的最后换行符之前匹配,而\z恰好匹配字符串的末尾)。