0

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

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

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

我正在尝试进行以下工作,但到目前为止非常不成功!不确定如何在正则表达式中正确使用 OR 和 AND 符号。

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

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

另一个例子:

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

正则表达式将返回: 123456 234567 , asdf qs , as123!@#/*()

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

4

3 回答 3

1

我不了解 .net,但我在 ruby​​ 中尝试过这个并且效果很好:

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

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

于 2012-12-28T01:06:13.953 回答
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");
        }

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

于 2012-12-28T01:06:41.673 回答
0

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

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

演示+说明:http ://regex101.com/r/mC8jR2

于 2012-12-28T01:09:37.733 回答