.net 正则表达式需要解析出几个变量的值

.net 正则表达式需要解析出几个变量的值,.net,regex,.net,Regex,我试图从以下示例中检索所有变量值的列表: JobName :: Variable1 = 1 | Variable2 = 2 | Variable3 = 3 我想帮助您从上述变量返回值1、2和3 我试图做以下工作,但迄今为止相当不成功!不确定如何在正则表达式中正确使用或符号 (<?<=\s*=\s*).+ | \n 正则表达式将返回:123456234567,asdfqs,as123@#/*() 请注意:我只需要返回介于[=和|]或[=和\n]之间的内容。我不了解.net,但我在r

我试图从以下示例中检索所有变量值的列表:

JobName :: Variable1 = 1 | Variable2 = 2 | Variable3 = 3
我想帮助您从上述变量返回值1、2和3

我试图做以下工作,但迄今为止相当不成功!不确定如何在正则表达式中正确使用或符号

(<?<=\s*=\s*).+ | \n
正则表达式将返回:123456234567,asdfqs,as123@#/*()


请注意:我只需要返回介于[=和|]或[=和\n]之间的内容。

我不了解.net,但我在ruby中尝试了这一点,效果非常好:

=\s([^\|]*)\s?\|?
它将捕获三个变量(如果有更多变量,则捕获更多)


或者您甚至可以跳过“Variable”,只需使用
“=(.+?)([|]|$)”
作为模式

以下是一个非常简单的解决方案,它将按照您的需要提取变量/值:

(?<variable>[^| :=\r\n]+)\s*=(?<value>[^|\r\n]+)
(?[^ |::=\r\n]+)\s*=(?[^ | \r\n]+)

演示+解释:

我假设您希望匹配变量1、变量2、,瓦里亚布伦。不仅仅是3个变量,对吗?@WillC。对的我只是举了3个变量作为例子。这非常接近!几乎正是我需要的。您是否可以编写它,使其不包括开头和结尾的“=”和“|”符号?谢谢您,但我只需要等号后面的值。你的演示非常酷@实践表明正则表达式有什么问题?如果您需要紧跟
=
之后的空格,请将
=\s*(?
更改为
=(?\s*
@ThePracticalSyde:view edited post。我也同意演示非常棒:)正则表达式没有问题!我正在尝试让这个正则表达式在我的自动化实用程序中工作,但它没有返回“results”返回给我,您的演示是。我将尝试几次迭代,看看是否能找到解决方案。谢谢。有没有方法使用=(.+?)([|]|$)而不在结果中包含“=”和“|”呢?我只需要返回介于[=和|]或[=和\n]之间的值@PracticalSyde你试过了吗?它返回的正是你想要的need@ThePracticalSyde确保检查的不是匹配,而是结果!问题是,我正在使用自动化实用程序解析文本(使用正则表达式)它只会将匹配项返回给我。不允许我检查结果。@PracticalSyde哪个实用程序以及它如何返回匹配项?
        string a = "JobName :: Variable1 = 123456 234567 | Variable2 = asdf q s | Variable3 = as123!@#/*()";

        MatchCollection mc = Regex.Matches(a, "Variable.+?=(.+?)([|]|$)");
        foreach (Match item in mc)
        {
            string res = item.Result("$1");
        }
(?<variable>[^| :=\r\n]+)\s*=(?<value>[^|\r\n]+)