我有一个大字符串,想要找到第一个出现的X,X是“numberXnumber”... 3X3,或4X9 ......
我怎么能在C#中做到这一点?
答案 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