问题标签 [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.
c++ - 如何使用 boost::xpressive static 在语义操作中引用可选子匹配?
我有一个提升 xpressive 正则表达式和语义操作,相当于以下内容:
以前我在 boost 1.43 上使用它没有任何问题。我最近不得不升级到更新的提升,现在我遇到了以下问题。在 boost 1.48 上,当子匹配不匹配任何内容(因为它是可选的)时,在空对象上执行bad_lexical_cast
时语义操作会引发异常。as
s1
我该如何解决这个问题,它之前是否有效只是巧合,并且我应该使用一些更好的更安全的方法来解决这个问题?或者这只是例如lexical_cast
现在中断的代码中的一些更改xpressive
?
附加信息
通过更改 regex_actions.hpp 中的以下内容,我设法暂时解决了实际问题:
进入:
这使我相信,也许这本身就是需要解决的问题xpressive
。但是,我还不是 100% 相信这不是我做错的事情,任何有更多知识的xpressive
人对此有一些见解?
regex - 正则表达式导致段错误/堆栈溢出
(或者我认为)...
我使用 boost::xpressive 作为我的正则表达式引擎来解析一些东西,我得到一个段错误。我怀疑递归性和我糟糕的正则表达式是罪魁祸首,因为 gdb 显示了 300 多个堆栈帧。所以,这是我的(区分大小写的)正则表达式,用 perl/python 表示法:
我希望匹配
第一组中的第一个大写文本(HEADER HERE),第二组中的第二个大写文本。如果应该匹配第 2 组的文本很长,我总是会收到段错误。
为什么不应该这样做?
c++ - boost::xpressive 查看序列的开头
我正在使用 boost::xpressive 来解析我的文本文件。我想看看是否只有当行以“#”开头时(多次)。
我正在使用以下代码
但我总是得到“找不到匹配!”,即使行以#开头。有人能帮我一下吗?
顺便说一句,任何人都可以帮助我使用 boost::xpressive 'bos' 编写 rex1 语句吗?
谢谢!阿耶莎
regex - how to match multi-line text?
this can't work, i use boost.xpressive not boost.regex, how to match multi-line text?
regex - xpressive 中的哪个通配符表示整个文本结尾?
使用 ANSI C PCRE,我可以通过以下方式提取部分及其内容:
从[sec1] a = b [sec2] c = d
我得到[sec1] a = b
和[sec2] c = d
但我怎么能在 xpressive 中做到这一点?
regex - 哪种 Xpressive 方法最适合减少堆栈使用
我在我当前的嵌入式 C++ 项目中广泛使用 Xpressive。
据我所知,Xpressive 是堆栈的出色用户。但是有没有更高效的 Xpressive 正则表达式方法?
例如,匹配表示 32 位整数的字符串的正则表达式可能需要测试数字 6 是否小于或等于 6。
Xpressive(以及其他正则表达式引擎,我知道)允许多种方法,例如:
或者
或者
然后正则表达式可能允许 3 个以下数字,例如:
或者
但是,考虑到选择,并且不太关心源代码布局,哪种方法最适合:
a) 堆栈;
b) 速度;
C) ?
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 在实际应用中是必不可少的。
javascript - 在正则表达式中嵌套 OR
如何匹配我需要做or
另一组的表达式?
即,我如何匹配某种格式的东西
其中 a、b、x 和 y 是字符串。
我想匹配这样的短语
但不是这样的:
我正在尝试在Boost Xpressive中使用它,因此我可以选择使用 ECMAScript 或 Perl 类型的正则表达式。
c++ - 使用 Boost C++ 库使用自定义替换进行正则表达式替换
我可以使用 Boost 库的 Xpressive 进行一些正则表达式替换,如下所示:
我需要的是用某个转换函数的结果替换捕获的部分,例如
所以上面提供的示例的结果将是cb gf。
您认为实现这一点的最佳方法是什么?
提前致谢!
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;
(通过解析)