Могу ли я использовать регулярное выражение для поиска индекса X?
У меня есть большая строка и вы хотите найти первое вхождение X, X - "numberXnumber"... 3X3 или 4X9...
Как я могу сделать это на С#?
Ответ 1
Да, регулярное выражение может сделать это для вас
вы могли бы сделать ([0-9]+)X([0-9]+) Если вы знаете, что цифры - только одна цифра, вы можете взять [0-9]X[0-9]
Ответ 2
var s = "long string.....24X10 .....1X3";
var match = Regex.Match(s, @"\d+X\d+");
if (match.Success) {
Console.WriteLine(match.Index); // 16
Console.WriteLine(match.Value); // 24X10;
}
Также обратите внимание на NextMatch, которая является удобной функцией
match = match.NextMatch();
match.Value; // 1X3;
Ответ 3
это может помочь вам
string myText = "33x99 lorem ipsum 004x44";
//the first matched group index
int firstIndex = Regex.Match(myText,"([0-9]+)(x)([0-9]+)").Index;
//first matched "x" (group = 2) index
int firstXIndex = Regex.Match(myText,"([0-9]+)(x)([0-9]+)").Groups[2].Index;
Ответ 4
var index = new Regex("yourPattern").Match("X").Index;
Ответ 5
Для тех, кто любит методы расширения:
public static int RegexIndexOf(this string str, string pattern)
{
var m = Regex.Match(str, pattern);
return m.Success ? m.Index : -1;
}
Фактический шаблон будет [0-9]x[0-9], если вы хотите, чтобы только одиночные числа (89x72 соответствовали только 9x7) или [0-9]+x[0-9]+, чтобы соответствовать самой длинной последовательной строке чисел в обоих направлениях.