5

C# 的Regex.Match方法具有允许匹配从特定偏移量开始的重载。

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

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

不,我不能只传递从该位置开始的子字符串——前缀可能会改变事情。

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

4

1 回答 1

4

关键是您希望使用匹配标志来指定迭代器是较大字符串的一部分。

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

于 2013-01-07T20:47:40.403 回答