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

May*_*tBe 2 regex flex-lexer

在我学习 flex 的过程中,我有一个扫描仪回声输入添加行号。

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

问题是在显示的末尾总是有一个单独的行号。

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

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

有什么想法吗?

Fed*_*zza 5

我不知道什么正则表达式引擎使用 Flex 但你可以使用这个正则表达式:

\z
Run Code Online (Sandbox Code Playgroud)

工作演示

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

仅匹配字符串的结尾。与 $ 不同,这不受多行模式的影响,并且与 \Z 不同,它不会在字符串末尾的尾随换行符之前匹配。

在此处输入图片说明

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

(?<=[\S\s])$
Run Code Online (Sandbox Code Playgroud)

工作演示

编辑:由于 flex 似乎与其他正则表达式引擎的工作方式略有不同,因此您可以使用此正则表达式:

[\s\S]$
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明