【发布时间】:2021-10-27 14:22:31
【问题描述】:
我需要通过 Powershell 将包含多个单词的输入字符串转换为字符串数组。 单词可以由多个空格和/或换行符分隔。 每个单词都可以用单引号或双引号转义。 有些词可能以标签开头 - 在这种情况下,任何引用都会出现在该标签之后。
这里是一个可能的输入和预期结果的代码示例:
$inputString = @"
test1
#custom1
#"custom2" #'custom3'
#"custom ""four""" #'custom ''five'''
test2 "test3" 'test4'
"@
$result = @(
'test1'
'#custom1'
'"#custom2"'
"#'custom3'"
'#"custom ""four"""'
"#'custom ''five'''"
'test2'
'"test3"'
"'test4'"
)
有没有办法通过聪明的正则表达式来做到这一点?或者有人有一个 parser-sn-p/function 开始?
【问题讨论】:
-
用正则表达式处理
''/""转义序列将是一场噩梦,你最好手动编写解析器(一次读取一个字符的字符串,然后决定它是否是前一个令牌的延续) -
感谢您的快速反馈。会不会误用 convertFrom-CSV servlet?
-
不,它会期望分隔符是统一的,它将以
#开头的任何内容解释为注释/元数据。您需要自己编写 -
主题标签是否允许出现在字符串中?如果没有,替换它们会使这项任务变得容易得多。
标签: regex powershell parsing