【发布时间】:2017-03-04 06:41:09
【问题描述】:
我正在尝试使用 powershell 从文件中删除敏感数据并将其替换为虚拟数据,但前提是它位于注释块中(在一行 -- 之后,或在 /* 和 */ 之间,可以跨行)
所以一个虚拟的例子是
So |AAthis|ABpart|is fine, as is this -- but remove ('|AAthis|ABthisisfine|ACremovethis|ADandleavetherest', more line here,3)
我希望替换为
So |AAthis|ABpart|is fine, as is this-- but remove ('|AATHAT|ABthisisfine|ACANDREMOVETHAT|ADandleavetherest', more line here,3)
在 powershell 正则表达式中,我已经接近了:
$var= "So |AAthis|ABpart|is fine, as is this -- but remove ('|AAthis|ABthisisfine|ACremovethis|ADandleavetherest', more line here,3)"
$var -replace '(.*--.*\|AAthis).*(\|.*)', ('$1' + 'THAT' + '$2')
,但是(a)我还没有处理多行块,它贪婪并删除所有中间段有问题
So |AAthis|ABpart|is fine, as is this -- but remove ('|AAthisTHAT|ADandleavetherest', more line here,3)
【问题讨论】:
-
解析出 cmets 很容易,但如果文件有任何被解释为引号的结构,它们也必须被解析。有报价吗?另外,我没看错,注释语法是
--到行尾,/* .. */可以跨行? -
不确定您对“构造为引号”的含义。上面的例子是我最期望的样子,它在引号和刻度内。注释语法:正确。 (这是 SQL cmets,如果有帮助的话)
-
这个文件是用来解析关键字或语法的吗?如果引号是可解析的,您必须能够区分它们。示例:
If this 'is a quote' Then this 'here -- is not a comment' -
你发现了什么?
-
EDI 字符串中不应包含引号,但显然它可以嵌入引号中。(在示例中,它是嵌入的)
标签: sql regex powershell