C#Unity中的正则表达式

C#Unity中的正则表达式,c#,regex,unity3d,C#,Regex,Unity3d,我有字符串的形式:“t1 v2”。我需要t和v后面的数字,看起来很简单,我在做: Regex regex = new Regex("t([0-9])"); MatchCollection matches = regex.Matches(options); if (matches.Count > 0) { foreach (Match match in matches) { CaptureCollection captures = match.Captures;

我有字符串的形式:“t1 v2”。我需要t和v后面的数字,看起来很简单,我在做:

Regex regex = new Regex("t([0-9])");
MatchCollection matches = regex.Matches(options);
if (matches.Count > 0) {
    foreach (Match match in matches) {
        CaptureCollection captures = match.Captures;
        Debug.Log(captures[0].Value);
    }
}
我尝试了其他一些方法,但它总是返回“t1”,我需要它返回“1”


我在这里遗漏了什么?

您没有遗漏任何内容,您只需要从结果中选择正确的捕获:

        var options = "t1 v2";

        var result = Regex.Matches(options, "[a-zA-Z]([0-9]+)").Cast<Match>().Select(x => int.Parse(x.Groups[1].Value)).ToList();
        Console.WriteLine(string.Join(";", result));//1;2
var options=“t1 v2”;
var result=Regex.Matches(选项“[a-zA-Z]([0-9]+)”)).Cast().Select(x=>int.Parse(x.Groups[1].Value)).ToList();
Console.WriteLine(string.Join(“;”,result))//1.2.
或者更直截了当

        result = Regex.Matches(options, "[a-zA-Z](?<foo>[0-9]+)", RegexOptions.ExplicitCapture).Cast<Match>().Select(x => int.Parse(x.Groups["foo"].Value)).ToList();
        Console.WriteLine(string.Join(";", result));//1;2
result=Regex.Matches(选项,[a-zA-Z](?[0-9]+)”,RegexOptions.ExplicitCapture.Cast().Select(x=>int.Parse(x.Groups[“foo”].Value)).ToList();
Console.WriteLine(string.Join(“;”,result))//1.2.
在您的正则表达式查询中(值得一提的是,您的查询将丢失't32'等字符串):

result=Regex.Matches(选项,“t([0-9])”).Cast().Select(x=>int.Parse(x.Groups[1].Value)).ToList();
Console.WriteLine(string.Join(“;”,result))//1.

您还错过了“v”附近的数字。尝试以下操作:将结果输出为完全匹配而不分组
        result = Regex.Matches(options, "t([0-9])").Cast<Match>().Select(x => int.Parse(x.Groups[1].Value)).ToList();
        Console.WriteLine(string.Join(";", result));//1