我可以使用正则表达式找到X的索引
本文关键字:索引 可以使 正则表达式 我可以 | 更新日期: 2023-09-27 17:49:32
我有一个大字符串,并想找到X的第一次出现,X是"numberXnumber"…3 × 3,或4 × 9…
我如何在c#中做到这一点?
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]+
以匹配两个方向上最长的连续数字字符串。