【问题标题】:powershell split using wildcardpowershell 使用通配符拆分
【发布时间】:2021-09-25 10:24:40
【问题描述】:

我正在尝试使用 PowerShell -split 运算符拆分文本文件,但无法找出表达式。

例子

这需要分成总共 4 个部分,例如

虽然前 2 个部分按预期工作,但第 3 个部分可以是带空格的文本或不带空格的文本或不适合我的可变长度的数字。

$c -split "(\d\d/\d\d/\d\d),\s(\d\d\:\d\d)\s\-\s*"

$c -split "(\d\d/\d\d/\d\d),\s(\d\d\:\d\d)\s\-\s(*\:\s)"

将其拆分为 3 并且无法将其拆分为 4,因为 * 似乎覆盖了第 4 部分

任何解决此问题的建议将不胜感激

【问题讨论】:

  • 您能否为您的示例预期输出使用纯文本而不是屏幕截图?如果其他人可以复制你已有的东西,他们会更容易帮助你。
  • 我最初是这样做的,但格式被弄乱了,所以编辑并发布了一张图片。将在 cmets 中发布示例
  • 16/01/18, 00:47 - John Doe: Payload_Text 23/01/18, 14:27 - JaneDoe: Payload_Text 16/01/18, 00:47 - Jack the Rabbit: Payload_Text 23/01/18,14:27 - 12 345 67890:Payload_Text

标签: powershell split wildcard


【解决方案1】:

使用正则表达式alternation (|) 指定多个(多字符)分隔符字符串:

'16/01/18, 00:47 - John Doe: Payload_Text' -split ', | - |: '

请注意,您传递给-split operator 的正则表达式指定了分隔标记的内容,而不是与标记本身匹配的内容。

(在(...) 中包含(部分)正则表达式,即包括捕获组,使-split 包含输出中捕获的文本,但您的示例数据不需要匹配令牌本身的任何部分)。

请注意,如果您有一个 array 输入字符串,则必须在 循环 中对每个字符串调用 -split,就像直接使用 -split将返回一个单个平面数组,其中包含所有输入字符串中的标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 2020-02-27
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2016-10-08
    • 2020-03-30
    • 1970-01-01
    相关资源
    最近更新 更多