我有一个字符串,它包含
"some text \\computername.example.com\admin$".我如何做一个替换,这样我的最终结果将只是"computername“
我的问题似乎不知道如何转义两个反斜杠。为了简单起见,我不喜欢使用regexp :)
编辑:实际上看起来stackoverflow的双反斜杠也有问题,它应该是双反斜杠,而不是显示的单反斜杠
发布于 2009-02-17 15:17:57
首先,这里给出的正则表达式方法绝对没有错。但是,如果你反对它,请检查以下内容:
$test = "some text \\computername.example.com\admin$"
$test.Split('\')[2].Split('.')[0]非常简单的测试表明,在我的机器上拆分的速度略快于它的价值:
12:35:24 |(19)|C:\ PS>Measure-Command {1..10000 | %{'some text \\computername.example.com\admin$'.Split('\')[2].Split('.')[0]}}
Days : 0
Hours : 0
Minutes : 0
Seconds : 1
Milliseconds : 215
Ticks : 12159984
TotalDays : 1.40740555555556E-05
TotalHours : 0.000337777333333333
TotalMinutes : 0.02026664
TotalSeconds : 1.2159984
TotalMilliseconds : 1215.9984
12:35:34 |(20)|C:\ PS>Measure-Command {1..10000 | %{'Some text \\computername\admin$' -replace '\\\\(\w+)\\(\w+)\$', '$1'}}
Days : 0
Hours : 0
Minutes : 0
Seconds : 2
Milliseconds : 335
Ticks : 23351277
TotalDays : 2.70269409722222E-05
TotalHours : 0.000648646583333333
TotalMinutes : 0.038918795
TotalSeconds : 2.3351277
TotalMilliseconds : 2335.1277发布于 2009-02-14 00:38:08
在这种情况下,我认为您无法摆脱正则表达式。
我会使用这个模式:
'Some text \\computername\admin$' -replace '\\\\(\w+)\\(\w+)\$', '$1'这给了你
PS C:\> 'Some text \\computername\admin$' -replace '\\\\(\w+)\\(\w+)\$', '$1'
Some text computername或者,如果您只想要行中的计算机名:
'Some text \\computername\admin$' -replace '.*\\\\(\w+)\\(\w+)\$', '$1'它会返回
PS C:\> 'Some text \\computername\admin$' -replace '.*\\\\(\w+)\\(\w+)\$', '$1'
computernamehttps://stackoverflow.com/questions/548060
复制相似问题