我要搜索的字符串\ n \ n或\ n \ n或\ n \ S * \ n搜索從一些指標開始喜歡字符串與普通Exprerssion查找指數開始與一些指數
mystring.LastIndexof(regularexpression, mystartindex)
指數
,同樣
mystring.Indexof(regularexpression, mystartindex)
我要搜索的字符串\ n \ n或\ n \ n或\ n \ S * \ n搜索從一些指標開始喜歡字符串與普通Exprerssion查找指數開始與一些指數
mystring.LastIndexof(regularexpression, mystartindex)
指數
,同樣
mystring.Indexof(regularexpression, mystartindex)
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);
Regex re = new Regex(@「\ n \ s * \ n」); MatchCollection DoubleLineIndexes = re.Matches(wholeDocumentText);
INT LastIndexOf(MatchCollection MATHES,INT指數) {
for (int i = 0; i < mathes.Count; i++)
{
if (mathes[i].Index > index) return mathes[i-1].Index;
}
return -1;
}
int IndexOf(MatchCollection mathes, int index)
{
for (int i = 0; i < mathes.Count; i++)
{
if (mathes[i].Index > index) return mathes[i].Index;
}
return -1;
}
我鼓掌你寫這個:)的機制我已經更新了我的答案,但類似的東西(**#1 **)表述爲擴展方法,因此使用變得更加方便**#2 **)更少的bug(例如,當第一個匹配已經超出開始索引時,LastIndexOf會拋出'IndexOutOfRangeException' ...(**#3 **)少得多的代碼,使得它更清晰地發生了什麼(* *#4 **)正則表達式選項(尤其是'Compiled'和'Multiline'),對於性能和正確操作而言可能非常重要(取決於您使用它的方式)。我希望你喜歡它 – sehe
謝謝這麼多,我喜歡用你的解決方案。 –
如果我想反向搜索,即lastindexof –
@MuhammadAhsan那表情都不怎麼正常工作。你只需迭代直到最後一場比賽,並使用它'.Index' – sehe
但我想解決方案在我的情況下工作 –