C#的Regex.Match
method has an overload,允许匹配从特定偏移量开始。
如何让std::regex
在字符串中的指定位置开始匹配?
不,我不能只是从该位置开始传递一个子字符串 - 前缀可能会改变一些东西。
例如,前缀可能表示给定位置不是新行的开头,而如果我将字符串切掉,它看起来就像一个新行,我会得到一个需要检测换行符的模式的错误匹配。对于lookbehinds等存在同样的问题。
答案 0 :(得分:3)
关键是你要使用match标志来指定迭代器是更大字符串的一部分。
您需要使用已经提升为@ildjarn建议的迭代器,然后使用标志std::regex_constants::match_prev_avail
来指定迭代器--first
是可解除引用的。这将允许正则表达式匹配器使用前一个元素作为其测试的一部分。