我可以使用正则表达式来查找X的索引吗?

时间:2011-04-08 07:16:19

标签: c# regex

我有一个大字符串,想要找到第一个出现的X,X是“numberXnumber”... 3X3,或4X9 ......

我怎么能在C#中做到这一点?

7 个答案:

答案 0 :(得分:41)

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;

答案 1 :(得分:4)

是的,正则表达式可以为你做到这一点

你可以做([0-9]+)X([0-9]+)如果您知道这些数字只是一位数,那么您可以[0-9]X[0-9]

答案 2 :(得分:2)

这可能会对你有所帮助

   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;

答案 3 :(得分:2)

对于喜欢推广方法的人:

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

答案 4 :(得分:1)

var index = new Regex("yourPattern").Match("X").Index;

答案 5 :(得分:0)

您想要号码或号码的索引吗?你可以得到这两个,但你可能想要看看System.Text.RegularExpressions.Regex

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

答案 6 :(得分:0)

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

您可以使用此模式:

  

\ d([XX])\ d

如果我测试

  

blaat3X3test

我明白了:

  

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