C# 如何在开始索引时匹配正则表达式?

C# 如何在开始索引时匹配正则表达式?,c#,.net,regex,C#,.net,Regex,我如何创建一个正则表达式来开始匹配它开始搜索的地方 换言之: \A表示“在搜索开始时匹配,即使它不在主字符串的开头”,它的等价物是什么 您要查找的是\G: new Regex(@"\G\n").IsMatch("!\n", 1); // It's twue, it's twue! 事实上,这对我来说是个惊喜。我知道\G,但它通常被描述为与输入的开始或最近成功匹配的结束相匹配的锚点,这两者在这里都不适用。如果这是一项.NET创新,他们应该对此发出更多的噪音;看起来很方便 EDIT:想想看,

我如何创建一个正则表达式来开始匹配它开始搜索的地方

换言之:

\A
表示“在搜索开始时匹配,即使它不在主字符串的开头”,它的等价物是什么


您要查找的是
\G

new Regex(@"\G\n").IsMatch("!\n", 1);    // It's twue, it's twue!
事实上,这对我来说是个惊喜。我知道
\G
,但它通常被描述为与输入的开始或最近成功匹配的结束相匹配的锚点,这两者在这里都不适用。如果这是一项.NET创新,他们应该对此发出更多的噪音;看起来很方便


EDIT:想想看,Java的
find(int)
也以同样的方式工作——我甚至广泛使用过它。但是后来他们在Java5中添加了“regions”API,它提供了更精细的控制,我忘记了这个习惯用法。我从没想过要在.NET中查找它。

噢,我只是想起了大约4-5年前在一本关于
Regex.Match
的书中读到的一些东西

重载的行为与我们期望的不一样

超载

Regex.Match(string input, int index, int length)
Regex.Match(string input, int index)
指定要搜索的子字符串,而重载

Regex.Match(string input, int index, int length)
Regex.Match(string input, int index)
只是指示搜索应该从哪里开始

(我想,它忽略了从子字符串中任意位置开始的一种情况。)


希望这对人们有所启发…

@NullUserExceptionఠ_ఠ: 我将在一个很长的循环中做这件事,所以这将是非常昂贵的。我不敢相信这是twue+1+1哇,你找到了!看起来它从+1开始就存在了。是的,结果是
新的正则表达式(@“\A\n”)。匹配(!\n”,1,2)。成功也同样重要。那些狡猾的小魔鬼!