问题标签 [regexp-grammars]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
372 浏览

regex - 我如何最好地使用 Perl 的 Regexp::Grammars 进行平衡引用?

使用 Damian Conway 的Regexp::Grammars,我尝试匹配不同的平衡引用('foo', "foo",但不是'foo")机制——例如括号、引号、双引号和双美元。这是我目前正在使用的代码。

这通常可以正常工作,并允许我说类似的话:

我的问题是如何改革输出,以排除pair令牌的针符号?

在这里,显然不希望pair在报价和literal价值之间存在任何关系。有没有更好的方法来匹配'foo', "foo", 和$$foo$$, 有时可能( foo )不需要每次都创建一个不必要的pair令牌?我可以预处理出该令牌或将其折叠到上面吗?或者,编写一个完全不需要它的更好的构造?

0 投票
1 回答
335 浏览

perl - 使用 perl 的 Regexp::Grammars,我如何根据 $MATCH 进行捕获?

我有一个像这样的令牌:

我想要发生的是delim2捕获并设置为delim. 当我运行它时,delim2已设置,但捕获从未完成。我认为这是我推理中的一个错误:我正在尝试链接这种形式:

和这种形式:(?{ MATCH{delim} })变成这样的东西

但这似乎根本不成立。我可以验证我的原始令牌作品<delim2=((?{ die $MATCH{delim} }))>将随着价值而消失,并且,如果我对其进行硬编码,我会得到正确的捕获并且一切正常<delim2=(')>吗?那么,我如何在拥有动态模式的同时实现理智的结果呢?

0 投票
2 回答
5961 浏览

context-free-grammar - 没有多余括号的算术表达式的明确文法

我正在寻找一种没有多余括号的算术表达式的明确语法。例如,括号在 中是多余的id+(id*id),但在 中不是(id+id)*id

0 投票
1 回答
86 浏览

perl - 如何在 %/ 中保存匹配的订单?

考虑以下规则

以下输入的输出 ( %/) 将相同

这是因为第二个附加到名为“token1”的列表中的第一个,但没有提示与其他令牌匹配的顺序。

知道如何将匹配的订单保存到%/吗?

ps 我在用这个 %/ 魔法变量编译我的脚本时遇到问题。它总是在使用%/. 我假设编译器认为它是正则表达式的开始而不终止 /... 如果我正确使用它,请告诉我。

0 投票
1 回答
446 浏览

regex - 只有一个插入符号的字符类有什么作用?

在尝试回答找到特定字符时将文本写入新行的问题时,我使用了Regexp::Grammars。它一直让我感兴趣,最后我有理由学习。我注意到作者的描述部分有一个 LaTeX 解析器(我是一个狂热的 LaTeX 用户,所以这让我很感兴趣)但它有一个奇怪的结构在这里看到:

[^]角色类完成了什么?

0 投票
1 回答
387 浏览

perl - 我应该使用 Parse::RecDescent 还是 Regexp::Grammars 从文档中提取表格?

我有很多希望用 perl 解析的大型纯文本文档。每个文档中主要包含英文段落,每个文档中都有几个纯文本标记的表格。

我创建了一个语法来描述表结构,但不确定是否最好使用 Parse::RecDescent 或 Regexp::Grammars 来提取表。

我最初倾向于 Parse::RecDescent,但我不确定在语法中你将如何处理我想忽略的 90% 的文档文本,以便找到我想要提取的几个表隐藏在每个表中文档。

也许我需要 Regexp::Grammars 以便我可以通过文档“拉”我的表达式,直到找到匹配项?

谢谢

0 投票
1 回答
263 浏览

regex - 如何使用 Regexp::Grammars 匹配多行模式?

我是 Regexp::Grammars 的新手,在匹配多行模式时遇到了麻烦。我有这个输入:

这个语法:

我只匹配该部分的第一行,但我想将所有文本捕获到空行或输入结尾。谁能看到我做错了什么?

0 投票
2 回答
177 浏览

.net - .NET 中是否有类似 perl 的 Regexp::Grammars 或标记的子模式?

我真的很喜欢 perl 的Regexp::Grammars模块。.NET 有类似的东西吗?

我真的很想在 C# 中以正则表达式样式的方式使用递归下降解析器(例如,通过大型文档搜索匹配的模式),并且能够递归地表达该模式。

更新在阅读了 brian d foy 的这个小宝石后,我发现 perl 5.10 支持使用 (?&NAME) 标记的子模式。PCRE现在有一个Nuget 包,并且 PCRE 支持命名/标记的子模式。

0 投票
1 回答
93 浏览

regex - 加载 Regexp::Grammars 后使用“普通”正则表达式

我正在尝试在应用程序中使用Regexp::Grammars,但它破坏了许多其他正则表达式。例如,下面的代码:

说明我的问题。我不确定如何处理这个问题,除了反复加载和卸载模块,我什至不确定在我明确卸载模块后是否可以使用扩展的正则表达式no。如何在仍然获得 Regexp::Grammars 的强大功能的同时允许正常的正则表达式?

0 投票
1 回答
194 浏览

perl - 使用 Regexp::Grammars 从文件中解析标签

我正在尝试使用 Perl 和Regexp::GrammarsCPAN 模块从程序中的注释中捕获免费标签。

但是 YAML 输出显示我只捕获了最后一个标签:

如何匹配输入数据中的所有标签?

而且...如何在不打开嘈杂的上下文字符串(删除nocontext:指令)的情况下获得匹配的标签字符串,以便最终结果更具可读性,即: