c++ - 如何从 RE2 检索完整的正则表达式匹配?

标签 c++ regex re2

我正在使用 RE2 来匹配某些文本上的正则表达式,但我在提取结果方面遇到了困难。

我想要的是:

文本:“示例文本”
正则表达式:“p.*x”
从文本中提取完整的正则表达式匹配:“ple tex”

我在 RE2 API 中找不到任何支持此功能的函数。 PartialMatch 仅从正则表达式中提取组(用括号标记),但我的正则表达式来自用户,我不能强制他们始终将其正则表达式包装在一个组中。我也不想手动将每个正则表达式包装在一个组中,因为这听起来不像一个优雅的解决方案,并且如果用户在正则表达式的开头放置修饰符,它就不起作用。这似乎是非常基本的功能,所以我很惊讶没有明确的方法来做到这一点。

有人知道这个问题的解决办法吗?

最佳答案

包装整个模式是一种有效的替代方案,因为内联修饰符不必位于模式的最开头,并且当您添加一对外括号时,例如到 ((?s)go.*there|take.*this) 时,(?s) DOTALL 修饰符仍将应用于两个 在模式中。

string text; 
if (RE2::PartialMatch("Sample text", "(p.*x)", &text)) {
    // Put more code here  
}

关于c++ - 如何从 RE2 检索完整的正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454385/

相关文章:

c++ - 如何纠正 GDI 资源泄漏?

c++ - 按位或保证评估顺序?

javascript - 查找字符串中每个出现的正则表达式

regex - 在 Google 表格中的列中的所有单元格内的子字符串后求和多个值

python - pybind 如何操作 py::list 对象

c++ - 哪个版本的 Dinkumware STL Lib 随 Visual Studio 2012 一起提供?

python - 检测正则表达式中的阿拉伯字符

javascript - 如何在 Javascript 中增加方括号内的数字

regex - Google RE2 正则表达式转义句点和下划线错误

python - pip install re2 报错