gpt4 book ai didi

c# - 使用以某个索引开头的正则表达式在字符串中查找索引

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:43 25 4
gpt4 key购买 nike

我想搜索字符串的索引\n\n 或\n\n 或\n\s*\n 搜索从某个索引开始

 mystring.LastIndexof(regularexpression, mystartindex)

和类似的

mystring.Indexof(regularexpression, mystartindex)

最佳答案

使用this Regex.Match overload

public Match Match(
string input,
int startat
)

例如

Regex re("\n\s*\n");
var index = re.Match(mystring, mystartindex).Index;

请注意,您可以使用 Match.NextMatch 获取下一个匹配项:

Match m = Regex.Match(mystring, re);
while (m.Success) {
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
m = m.NextMatch();
}

更新改编自您自己的解决方案:

public static class RegexMatchExtensions
{
public static int LastIndexOf(this MatchCollection matches, int index)
{
var match = matches.Cast<Match>().LastOrDefault(m => m.Index <= index);
return (match == null)? -1 : match.Index;
}

public static int IndexOf(this MatchCollection matches, int index)
{
var match = matches.Cast<Match>().FirstOrDefault(m => m.Index > index);
return (match == null)? -1 : match.Index;
}
}

用法:

/*private static readonly*/ Regex re = new Regex(@"\n\s*\n",
RegexOptions.Compiled
| RegexOptions.Multiline
| RegexOptions.CultureInvariant);

var doubleLineIndexes = re.Matches(wholeDocumentText);

var first = doubleLineIndexes.IndexOf(73);
var last = doubleLineIndexes.LastIndexOf(73);

关于c# - 使用以某个索引开头的正则表达式在字符串中查找索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com