我正在获得这样的输出
Fila 28:
Nombre del solicitante: "CONTOSO\X000000"
Fila 29:
Nombre del solicitante: "CONTOSO\E000000"
Fila 30:
Nombre del solicitante: "CONTOSO\X111111"
我需要过滤除引号内的所有内容
答案 0 :(得分:3)
使用带-match和-replace
的正则表达式的另一种可能更直观的解决方案$text = 'Nombre del solicitante: "CONTOSO\X111111"'
$regex = '\s*Nombre del solicitante: "([^"]+)"\s*'
@($text) -match $regex -replace $regex,'$1'
作为一个单行:
@(<command>) -match ''Nombre del solicitante:' -replace '.*"(.+)".*','$1'
在@()中包装命令输出是为了确保你返回一个数组,即使命令只返回一行,这样-match操作符就可以作为过滤器而不是布尔值真/假测试。 / p>
@JNK - 您正在使用数组进行测试(命令输出将产生什么)?
$text =
(@'
Fila 28:
Nombre del solicitante: "CONTOSO\X000000"
Fila 29:
Nombre del solicitante: "CONTOSO\E000000"
Fila 30:
Nombre del solicitante: "CONTOSO\X111111"
'@).split("`n")
$regex = '\s*Nombre del solicitante: "([^"]+)"\s*'
@($text) -match $regex -replace $regex,'$1'
CONTOSO\X000000
CONTOSO\E000000
CONTOSO\X111111
编辑 - 只获取帐户名称,不包含域名部分:
$regex = '\s*Nombre del solicitante: ".+?\\([^"]+)"\s*'
答案 1 :(得分:2)
您可以使用正则表达式轻松完成此操作:
$s = 'Nombre del solicitante: "CONTOSO\X111111"'
IF ($s -match '(?<=").*(?=")')
{$matches}
$Matches
将为您提供所检查字符串中每个匹配项的数组。您可以像任何其他哈希表一样迭代它以获取值。