我可以使用正则表达式找到X的索引

本文关键字:索引 可以使 正则表达式 我可以 | 更新日期: 2023-09-27 17:49:32

我有一个大字符串,并想找到X的第一次出现,X是"numberXnumber"…3 × 3,或4 × 9…

我如何在c#中做到这一点?

我可以使用正则表达式找到X的索引

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;

对于喜欢扩展方法的人:

public static int RegexIndexOf(this string str, string pattern)
{
    var m = Regex.Match(str, pattern);
    return m.Success ? m.Index : -1;
}

是的,regex可以为你做这个

你可以用([0-9]+)X([0-9]+)如果你知道数字是个位数你可以用[0-9]X[0-9]

这可能对你有帮助

   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;
var index = new Regex("yourPattern").Match("X").Index;

http://www.regular-expressions.info/download/csharpregexdemo.zip

你可以使用这个模式:

' d ((xX)) ' d

如果我测试

blaat3X3test

:

匹配偏移量:5匹配长度:3匹配文本:3X3组1偏移量:6第一组长度:1第一组文字:X

您想要的是号码,还是号码的索引?你可以得到这两个,但你可能会想看看system . text . regulareexpressions . regex

如果您只想要单个数字(89x72只匹配9x7),则实际模式将是[0-9]x[0-9],或者[0-9]+x[0-9]+以匹配两个方向上最长的连续数字字符串。