2

考虑这样的代码:

Match match = new Regex("^bar").Match(some_string,3);

我想匹配some_string,但不是从一开始,而是从给定位置开始。问题是,我想准确地从那个位置进行匹配,因此是锚点。

不幸的是,它不起作用。MS 正则表达式不能单独将字符串块作为字符串使用,因此仅匹配字符串^的一个且真正的开头,而不是起始位置

简单的解决方法是这样写:

Match match = new Regex("^bar").Match(some_string.Substring(3));

缩小尺寸——速度(即缺乏它)。

所以我的问题是——如何快速匹配字符串中间的锚定正则表达式

4

1 回答 1

4

.NET 对引擎开始的位置有一个单独的锚点(通常是最后一场比赛的结束,在你的情况下是偏移量)\G:.

所以你应该可以使用模式@"\Gbar"

来源 (MSDN)

如果要限制匹配,使其从字符串中的特定字符位置开始,并且正则表达式引擎不扫描字符串的其余部分以查找匹配项,请使用 a \G(在左侧为 left-从右到左的模式,或在右边的从右到左的模式)。这限制了匹配,因此它必须准确地从 开始startat

于 2012-12-22T21:57:04.720 回答