繁体   English   中英

正则表达式从字符串中的var中删除数字

[英]regex to strip number from var in string

我有一长串,里面有一个变种

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中获取号码?

感谢您的帮助和时间

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

您的正则表达式不正确:

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

+是量词,表示前面的字符至少重复一次(并且没有字符,因为(?< ... > ... )被称为捕获组,并且本身不被视为字符。

您可能的意思是:

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

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

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

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

\\s*表示任意数量的空格字符(尽管也会与制表符,换行符和换页符匹配)

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

为了专门匹配变量abc ,您可以这样输入:

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

(我增加了一些空格的余地)

尝试这个:

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);

从您提供的示例中可以得到数字,例如

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

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

但我想您的数据看起来不像您的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM