在垂直条之间获取数据

时间:2013-05-23 19:35:30

标签: regex powershell

我正在尝试提取以下数据。

|SERVER-1|Running|SERVER-2|Running|SERVER-3|Running|

我想在这样的垂直条之间获取数据

SERVER-1
Running
SERVER-2
Running
SERVER-2
Running

我试图在线搜索答案,但我搜索得越多就会让我感到困惑。我得到的最接近的是\[([^]]+)\],但它只会选择整行。

1 个答案:

答案 0 :(得分:3)

正如Cyborgx37指出的那样,这应该涵盖它:

[^|]+

如果您想无缘无故地使其复杂化,并假设您使用的语言支持环视,那么这也应该有效:

(如果字符串类似|SERVER-2||Running|,并且您希望中间部分实际打印空字符串,则可能需要此字符串)

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

<强>解释

?<=是后视,检查前面的字符是否匹配 ?=是预先检查,检查下一个字符是否匹配 [^|]表示不是| +是一个或多个 *为零或更多。
\是逃避|,否则意味着'或'。

因此,检查前一个字符是|,下一个字符是|,实际的正则表达式是一堆不是|的字符。