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

How to retrieve full regex match from RE2?

本文关键字:正则表达式 RE2 何检索 检索      更新时间:2023-10-16

我正在使用RE2来匹配一些文本上的正则表达式,但我正在努力提取结果。

我要的是:

文字:"Sample Text "
正则表达式:"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  
}