在我学习flex的过程中,我正在使用扫描仪回显输入添加行号。
在每一行之后,我会显示一个计数器并递增它。
麻烦的是显示屏末尾总是有一个单独的行号。
我需要一个正则表达式,它会忽略除最后一行之外的所有换行符。
我试过[\n/<<EOF>>]
无济于事。
有什么想法吗?
答案 0 :(得分:3)
我不知道正则表达式引擎使用Flex但您可以使用此正则表达式:
\z
<强> Working demo 强>
\ z断言字符串最后的位置。
仅匹配字符串的结尾。与$不同,这不受影响 多线模式,与\ Z相反,在a之前不匹配 在字符串末尾追踪换行符。
如果以上正则表达式不起作用,那么你可以使用这个:
(?<=[\S\s])$
<强> Working demo 强>
编辑:因为flex似乎与其他正则表达式引擎略有不同,你可以使用这个正则表达式:
[\s\S]$
获取每行的最新字符。然后你可以迭代所有行,直到得到最后一行。这里有一个在线flex regex引擎工具:
http://ryanswanson.com/regexp/#start
答案 1 :(得分:1)
尝试以下正则表达式,它将在该行的末尾搜索新的行字符。
\n$
答案 2 :(得分:0)