在我学习flex的过程中,我使用扫描器回显输入添加行号。正则表达式匹配文件中的最后一个换行符
每一行后我都会显示一个计数器并将其递增。
问题是显示屏末尾总是有一个单独的行号。
我需要一个正则表达式来忽略除最后一个换行符外的所有换行符。我试过[\n/<<EOF>>]
无济于事。
有什么想法?
在我学习flex的过程中,我使用扫描器回显输入添加行号。正则表达式匹配文件中的最后一个换行符
每一行后我都会显示一个计数器并将其递增。
问题是显示屏末尾总是有一个单独的行号。
我需要一个正则表达式来忽略除最后一个换行符外的所有换行符。我试过[\n/<<EOF>>]
无济于事。
有什么想法?
我不知道是什么的正则表达式引擎使用Flex的,但你可以使用这个表达式:
\z
\ Z ^断言在字符串的末尾位置。
仅匹配字符串的末尾。与$不同,这不受 多行模式的影响,并且与\ Z相反,在字符串末尾的 尾随换行符之前不匹配。
如果上述正则表达式不工作,那么你可以用这一个:
(?<=[\S\s])$
编辑:由于Flex似乎工作比其他略有不同正则表达式引擎,你可以使用这个正则表达式:
[\s\S]$
获取每一行的最新字符。然后你可以迭代所有行,直到获得最后一行。在这里,你有一个在线的弹性正则表达式引擎工具:
这是一个很酷的网站!感谢您的链接。这两个正则表达式都不幸工作,但我喜欢你在第二个上做的事! – MayNotBe 2014-08-31 06:10:05
@MayNotBe我用一种可能对你有帮助的方法更新了我的答案。顺便说一句,我还添加了一个在线flex正则表达式引擎工具的链接。希望能帮到 – 2014-08-31 15:29:17
在你学习flex的过程中,请使用flex-lexer标签而不是flex标签。后者是针对Adobe/Apache Flex的问题。 – 2014-09-01 07:52:49