0

我有一个长字符串,里面有一个 var

var abc = '123456'

现在我希望从中得到 123456。

我尝试了一个正则表达式,但它不能正常工作

            Regex regex = new Regex("(?<abc>+)=(?<var>+)");
            Match m = regex.Match(body);

            if (m.Success)
            {
                string key =  m.Groups["var"].Value;
            }

如何从 var abc 中获取数字?

感谢您的帮助和时间

4

4 回答 4

2
var body = @" fsd fsda f var abc = '123456' fsda fasd f";

Regex regex = new Regex(@"var (?<name>\w*) = '(?<number>\d*)'");

Match m = regex.Match(body);

Console.WriteLine("name: " + m.Groups["name"]);
Console.WriteLine("number: " + m.Groups["number"]);

印刷:

name: abc
number: 123456
于 2013-09-20T17:48:05.997 回答
1

您的正则表达式不正确:

(?<abc>+)=(?<var>+)

are 量词意味着前面的+字符至少重复一次(并且没有字符,因为(?< ... > ... )被命名为捕获组并且不被视为字符本身。

你的意思可能是:

(?<abc>.+)=(?<var>.+)

更好的正则表达式可能是:

(?<abc>[^=]+)=\s*'(?<var>[^']+)'

[^=]+将匹配除等号以外的任何字符。

\s*表示任意数量的空格字符(也将匹配制表符、换行符和换页符)

[^']+将匹配除单引号之外的任何字符。

为了专门匹配变量abc,你可以这样写:

(?<abc>abc)\s*=\s*'(?<var>[^']+)'

(我添加了更多的空间津贴)

于 2013-09-20T17:48:36.807 回答
0

尝试这个:

var body = @"my word 1, my word 2, my word var abc = '123456' 3, my word x";
Regex regex = new Regex(@"(?<=var \w+ = ')\d+");
Match m = regex.Match(body);
于 2013-09-20T17:56:37.503 回答
0

从您提供的示例中可以获取数字,例如

Console.WriteLine (
   Regex.Match("var abc = '123456'", @"(?<var>\d+)").Groups["var"].Value); // 123456

\d+ 表示 1 个或多个数字(数字)。

但我猜你的数据看起来不像你的例子。

于 2013-09-20T17:57:23.523 回答