【发布时间】:2021-03-30 20:38:00
【问题描述】:
我在下面有一个示例输入,我想使用正则表达式提取每个单独的列,但它不能用于多个连续的空格。我试过了
“([0-9])\s+([0-9])\s+([A-Za-z0-9- ]+)\s{2,}([A-Za-z0-9- ]+)\s+([A-Za-z0-9]+)”,它应该适用于每一行。
Output
Module Ports Type Model Serial No.
--------- ----- ------------------------------------ --------------- -----------
1 2 CCS-7354 Series Supervisor Module 7354-SPP JD546546527
2 1 Standby supervisor Unknown Unknown
3 28 28-port SFP+ 10GigE Linecard 7234S-PC FGK10449938
对于输入结果的第一行,我应该得到:
- “1”表示“输出模块”。
- “2”表示“端口”
- “类型”的“CCS-7354 系列管理模块”。
- “7354-SPP”用于模型。
- “序列号”为“JD546546527”
我收到“CCS-7354 Series Supervisor Module 7354-SPP ”的类型不正确。
【问题讨论】:
-
为什么不只计算第 3 行的破折号,然后使用计数检索列?然后你只需要修剪空白。然后,您可以使用正则表达式验证每个结果字符串。分而治之。
-
或者您可以多次执行以下正则表达式(使用 find):
(.+?)(?:\s{2,}|$)for each line... -
@tripleee "我想使用正则表达式提取每个单独的列" -- 你为什么选择一个非正则表达式的重复答案?
-
小仙女;我添加了另一个副本。
-
@Jojoleo 你的问题已经回答了吗?