我正在尝试提取以下数据。
|SERVER-1|正在运行|SERVER-2|正在运行|SERVER-3|正在运行|
我想像这样获取垂直条之间的数据
服务器-1 跑步 服务器-2 跑步 服务器-2 跑步
我试图在网上搜索答案,但我搜索的越多,它就越让我感到困惑。我得到的最接近的是使用它\[([^]]+)\]
,但它只会选择整行。
我正在尝试提取以下数据。
|SERVER-1|正在运行|SERVER-2|正在运行|SERVER-3|正在运行|
我想像这样获取垂直条之间的数据
服务器-1 跑步 服务器-2 跑步 服务器-2 跑步
我试图在网上搜索答案,但我搜索的越多,它就越让我感到困惑。我得到的最接近的是使用它\[([^]]+)\]
,但它只会选择整行。
正如 Cyborgx37 指出的那样,这应该涵盖它:
[^|]+
如果您想无缘无故地将其复杂化,并假设您使用的语言支持环视,这也应该有效:
(如果字符串类似于|SERVER-2||Running|
,并且您希望中间部分实际打印一个空字符串,您可能需要这个)
(?<=\|)[^|]*(?=\|)
解释:
?<=
是后视的,检查前面的字符是否匹配。
?=
是前瞻,检查下一个字符是否匹配。
[^|]
意味着不是|
。
+
是一个或多个。
*
是零或更多。
The \
is to escape |
,否则表示“或”。
所以你检查前一个字符是|
,下一个字符是|
,实际的正则表达式是一堆不是的字符|
。