正则表达式匹配文件中的最后一个换行符

时间:2014-08-30 21:05:54

标签: regex flex-lexer

在我学习flex的过程中,我正在使用扫描仪回显输入添加行号。

在每一行之后,我会显示一个计数器并递增它。

麻烦的是显示屏末尾总是有一个单独的行号。

我需要一个正则表达式,它会忽略除最后一行之外的所有换行符。

我试过[\n/<<EOF>>]无济于事。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我不知道正则表达式引擎使用Flex但您可以使用此正则表达式:

\z

<强> Working demo

  

\ z断言字符串最后的位置。

     

仅匹配字符串的结尾。与$不同,这不受影响   多线模式,与\ Z相反,在a之前不匹配   在字符串末尾追踪换行符。

enter image description here

如果以上正则表达式不起作用,那么你可以使用这个:

(?<=[\S\s])$

<强> Working demo

编辑:因为flex似乎与其他正则表达式引擎略有不同,你可以使用这个正则表达式:

[\s\S]$

获取每行的最新字符。然后你可以迭代所有行,直到得到最后一行。这里有一个在线flex regex引擎工具:

http://ryanswanson.com/regexp/#start

enter image description here

答案 1 :(得分:1)

尝试以下正则表达式,它将在该行的末尾搜索新的行字符。

\n$

答案 2 :(得分:0)

您是否尝试过这样做:

\n$

Regular expression visualization

Debuggex Demo

\n与换行符匹配,$匹配字符串的结尾。