0

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

|SERVER-1|正在运行|SERVER-2|正在运行|SERVER-3|正在运行|

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

服务器-1
跑步
服务器-2
跑步
服务器-2
跑步

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

4

1 回答 1

3

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

[^|]+

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

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

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

解释:

?<=是后视的,检查前面的字符是否匹配。
?=是前瞻,检查下一个字符是否匹配。
[^|]意味着不是|
+是一个或多个。
*是零或更多。
The \is to escape |,否则表示“或”。

所以你检查前一个字符是|,下一个字符是|,实际的正则表达式是一堆不是的字符|

于 2013-05-23T19:40:49.857 回答