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

时间:2012-12-28 00:47:13

标签: .net regex

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

JobName :: Variable1 = 1 | Variable2 = 2 | Variable3 = 3

我想帮助从上面的变量返回值1 2和3

我正在努力做以下工作,但到目前为止还不成功!不确定如何在正则表达式中正确使用OR和AND符号。

(<?<=\s*=\s*).+ | \n

基本上,正则表达式应匹配EQUAL符号后的任何内容,并继续匹配PIPE和/或END OF THE LINE。

另一个例子:

JobName :: Variable1 = 123456 234567 | Variable2 = asdf q s | Variable3 = as123!@#/*()

Regex将返回:123456 234567,asdf q s,as123!@#/ *()

请注意:我只需要返回什么是BETWEEN [=和|] OR [= and \ n]

3 个答案:

答案 0 :(得分:1)

我不知道.net,但我在红宝石中试过这个并且工作得很好:

=\s([^\|]*)\s?\|?

它将捕获三个变量(如果你有更多变量,则会更多)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

这是一个非常简单的解决方案,可以提取您想要的变量/值:

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

演示+解释:http://regex101.com/r/mC8jR2