我有一个很长的字符串,里面有一个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中获取数字?
感谢您的帮助和时间
答案 0 :(得分: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
答案 1 :(得分:1)
你的正则表达式不正确:
(?<abc>+)=(?<var>+)
+
是量词,意味着前面的字符至少重复一次(并且没有字符,因为(?< ... > ... )
被命名为捕获组,并且不被视为字符本身。
你或许意味着:
(?<abc>.+)=(?<var>.+)
更好的正则表达式可能是:
(?<abc>[^=]+)=\s*'(?<var>[^']+)'
[^=]+
将匹配除等号以外的任何字符。
\s*
表示任意数量的空格字符(也会匹配制表符,换行符和换页符)
[^']+
将匹配除单引号之外的任何字符。
要专门匹配变量abc
,您可以这样设置:
(?<abc>abc)\s*=\s*'(?<var>[^']+)'
(我为空格增加了一些补贴)
答案 2 :(得分: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);
答案 3 :(得分:0)
从您提供的示例中可以获得数字,例如
Console.WriteLine (
Regex.Match("var abc = '123456'", @"(?<var>\d+)").Groups["var"].Value); // 123456
\ d +表示一个或多个数字(数字)。
但我猜测你的数据看起来不像你的例子。