如何让std :: regex在字符串中的特定位置开始匹配?

时间:2013-01-07 20:36:40

标签: c++ regex c++11

C#的Regex.Match method has an overload,允许匹配从特定偏移量开始。

如何让std::regex在字符串中的指定位置开始匹配?

关于天真解决方案的注意事项:

不,我不能只是从该位置开始传递一个子字符串 - 前缀可能会改变一些东西。

例如,前缀可能表示给定位置是新行的开头,而如果我将字符串切掉,它看起来就像一个新行,我会得到一个需要检测换行符的模式的错误匹配。对于lookbehinds等存在同样的问题。

1 个答案:

答案 0 :(得分:3)

关键是你要使用match标志来指定迭代器是更大字符串的一部分。

您需要使用已经提升为@ildjarn建议的迭代器,然后使用标志std::regex_constants::match_prev_avail来指定迭代器--first是可解除引用的。这将允许正则表达式匹配器使用前一个元素作为其测试的一部分。