问题标签 [boost-xpressive]

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 投票
1 回答
254 浏览

c++ - 如何使用 boost::xpressive static 在语义操作中引用可选子匹配?

我有一个提升 xpressive 正则表达式和语义操作,相当于以下内容:

以前我在 boost 1.43 上使用它没有任何问题。我最近不得不升级到更新的提升,现在我遇到了以下问题。在 boost 1.48 上,当子匹配不匹配任何内容(因为它是可选的)时,在空对象上执行bad_lexical_cast时语义操作会引发异常。ass1

我该如何解决这个问题,它之前是否有效只是巧合,并且我应该使用一些更好的更安全的方法来解决这个问题?或者这只是例如lexical_cast现在中断的代码中的一些更改xpressive

附加信息

通过更改 regex_actions.hpp 中的以下内容,我设法暂时解决了实际问题:

进入:

这使我相信,也许这本身就是需要解决的问题xpressive。但是,我还不是 100% 相信这不是我做错的事情,任何有更多知识的xpressive人对此有一些见解?

0 投票
1 回答
633 浏览

regex - 正则表达式导致段错误/堆栈溢出

(或者我认为)...

我使用 boost::xpressive 作为我的正则表达式引擎来解析一些东西,我得到一个段错误。我怀疑递归性和我糟糕的正则表达式是罪魁祸首,因为 gdb 显示了 300 多个堆栈帧。所以,这是我的(区分大小写的)正则表达式,用 perl/python 表示法:

我希望匹配

第一组中的第一个大写文本(HEADER HERE),第二组中的第二个大写文本。如果应该匹配第 2 组的文本很长,我总是会收到段错误。

为什么不应该这样做?

0 投票
1 回答
221 浏览

c++ - boost::xpressive 查看序列的开头

我正在使用 boost::xpressive 来解析我的文本文件。我想看看是否只有当行以“#”开头时(多次)。

我正在使用以下代码

但我总是得到“找不到匹配!”,即使行以#开头。有人能帮我一下吗?

顺便说一句,任何人都可以帮助我使用 boost::xpressive 'bos' 编写 rex1 语句吗?

谢谢!阿耶莎

0 投票
1 回答
1884 浏览

regex - how to match multi-line text?

this can't work, i use boost.xpressive not boost.regex, how to match multi-line text?

0 投票
1 回答
132 浏览

regex - xpressive 中的哪个通配符表示整个文本结尾?

使用 ANSI C PCRE,我可以通过以下方式提取部分及其内容:

[sec1] a = b [sec2] c = d 我得到[sec1] a = b[sec2] c = d

但我怎么能在 xpressive 中做到这一点?

0 投票
1 回答
102 浏览

regex - 哪种 Xpressive 方法最适合减少堆栈使用

我在我当前的嵌入式 C++ 项目中广泛使用 Xpressive。

据我所知,Xpressive 是堆栈的出色用户。但是有没有更高效的 Xpressive 正则表达式方法?

例如,匹配表示 32 位整数的字符串的正则表达式可能需要测试数字 6 是否小于或等于 6。

Xpressive(以及其他正则表达式引擎,我知道)允许多种方法,例如:

或者

或者

然后正则表达式可能允许 3 个以下数字,例如:

或者

但是,考虑到选择,并且不太关心源代码布局,哪种方法最适合:

a) 堆栈;

b) 速度;

C) ?

0 投票
2 回答
1524 浏览

c++ - 无法与 boost xpressive 动态正则表达式匹配

Edit8:我首先为可能遇到同样问题的任何人发布了解决方案。

解决方案

用 = 分配正则表达式,而不是调用 () 运算符。工作得很好。那是愚蠢的。

原始问题

我已经与 xpressive 斗争了一段时间,但我还没有做任何事情。使用以下代码:

我没有找到我期望的匹配。帮助将不胜感激。

编辑:尝试将正则表达式编译行更改为

依然没有。

Edit2:使用 MinGW GCC 4.7 编译

Edit3:我还尝试将声明正则表达式字符串的行更改为

依然没有。

Edit4:我没有得到以下结果,仍然没有结果:

Edit5:我期待此时有两个匹配项,即 str 开头和结尾处的“foo”。

Edit6:尝试使用设置了 match_continuous 标志运行 regex_search 希望我至少可以让它获取前缀。没有骰子。还尝试使用 ECMAScript 标志进行编译,并使用 match_default 和 match_continuous 标志运行 regex_search。

Edit7:我知道 strstr() 会在这里工作。这是因为这是一个简单的示例案例。Boost 在实际应用中是必不可少的。

0 投票
4 回答
161 浏览

javascript - 在正则表达式中嵌套 OR

如何匹配我需要做or另一组的表达式?

即,我如何匹配某种格式的东西

其中 a、b、x 和 y 是字符串。

我想匹配这样的短语

但不是这样的:

我正在尝试在Boost Xpressive中使用它,因此我可以选择使用 ECMAScript 或 Perl 类型的正则表达式。

0 投票
2 回答
2449 浏览

c++ - 使用 Boost C++ 库使用自定义替换进行正则表达式替换

我可以使用 Boost 库的 Xpressive 进行一些正则表达式替换,如下所示:

我需要的是用某个转换函数的结果替换捕获的部分,例如

所以上面提供的示例的结果将是cb gf

您认为实现这一点的最佳方法是什么?

提前致谢!

0 投票
1 回答
551 浏览

c++ - Boost Xpressive 正则表达式分配和捕获组问题

我注意到 boost xpressive 正则表达式分配中的奇怪行为。请参阅下面的代码。第一个不起作用的代码片段具有 sregex 具有对象初步分配,然后稍后在主表达式中使用。第二个运行良好的代码片段之前没有 sregex 分配(除了最后一个主要的)。如果我错误地使用了 boost xpressive api,请告诉我。

不起作用的代码

string_to_parse = NameX,mark1:192.168.1.100:5555,mark2:192.168.1.101:5556;(解析失败)意思是什么[<>] 不包含任何值。

有效的代码

string_to_parse = NameX,mark1:192.168.1.100:5555,mark2:192.168.1.101:5556;(通过解析)