我正在尝试从以下示例中检索所有变量值的列表:
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]
答案 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]+)