首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >英斯塔帕斯:如何识别换行符

英斯塔帕斯:如何识别换行符
EN

Stack Overflow用户
提问于 2016-08-23 07:36:23
回答 2查看 336关注 0票数 0

我想解析包含换行符的文件的文本。该文件可能位于Windows或Unix中,但目前它是一个具有以下内容的Windows文件:

代码语言:javascript
复制
(**************
***************)

上面的文件内容已经用slurp读取,并将包含一个换行符。下面是我试图使用的语法:

代码语言:javascript
复制
S = start-comment stars <inside-comment>
start-comment = '('
stars = '*' +
<inside-comment> = '\n' +

这种语法也是从文件中删除的,我相信这会使事情变得更容易一些:

“唯一需要的转义字符是用于字符串和正则表达式的普通转义字符(另外,instaparse还支持\‘单引号内的字符串)。”

换行符似乎没有被解析:

代码语言:javascript
复制
Parse error at line 1, column 16:
(**************
               ^
Expected one of:
"\n"
"*"

我需要将<inside-comment>设置为什么才能使错误出现在第二行的第一颗星上,这将表明语法已经识别了换行符?

EN

回答 2

Stack Overflow用户

发布于 2016-08-23 19:02:35

Windows中的Newline显示为\r\n,在Unix中显示为\n。所以你需要这样的东西:

代码语言:javascript
复制
#'\r?\n'

如果语法在字符串中,则将黑线加倍:

代码语言:javascript
复制
"some-rule = #'\\r?\\n'"
票数 3
EN

Stack Overflow用户

发布于 2016-08-24 01:16:53

这将分析到最后:

代码语言:javascript
复制
S = start-comment stars <inside-comment-1> stars end-comment
start-comment = '('
end-comment = ')'
stars = '*' +
<inside-comment-1> = '\n' | '\r\n'
<inside-comment-2> = '\r?\n'

请注意,<inside-comment-2>不工作。当<inside-comment-1>工作时,可能有一种更优雅的方法可以通过换行符?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39095082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档