【发布时间】:2017-01-21 00:44:40
【问题描述】:
我有一个包含这些信息的 CSV 文件:
RIEN;ADRIEN;CECI EST UN EXEMPLE DU RIEN;RIEN;AUTRE VALEUR
VALEUR;RIEN DE CELA N'EST POSSIBLE;ADORIEN;VALEUR;RIEN
当值匹配“RIEN”时,我将设置为空白字段:
;ADRIEN;CECI EST UN EXEMPLE DU RIEN;;AUTRE VALEUR
VALEUR;RIEN DE CELA N'EST POSSIBLE;ADORIEN;VALEUR;
我尝试在https://regex101.com/ 中进行制作和测试,几个正则表达式。我最后的测试是:
(^RIEN)(?=;)|((?=;)(RIEN)(?=;))*|(?=;)(RIEN$)
我只想要“RIEN”值,没有分号
在未来,我喜欢使用 PowerShell 脚本删除数组中包含的所有模式:
$deleteCharacters = @(
"RIEN",
"VALUE WITH SPACE"
)
foreach ($deleteWord in $deleteWords) {
while ($line.Contains($deleteWord)) {
$line = $line.Replace($deleteWord, "")
}
有人帮帮我吗?
问候,
【问题讨论】:
-
$line -replace "[^;]*\bRIEN\b[^;]*", ""- 如果你想删除 0+ 个非;s、一个完整的单词RIEN,再删除 0+ 个非;s。 -
导入 csv 文件,遍历字段,测试值并在需要时替换它们。正则表达式在这里无关。
-
谢谢!这是工作:)
标签: regex powershell csv pattern-matching