我有一个字符串数组,我想消除该数组中每个字符串的一部分,但我在使用Regex时遇到了麻烦。
每个字符串的格式如下:
username comment IPaddress
username2 comment IPaddress
不幸的是,在某些方面,我在用户名和评论之间有多个空格。此外,至少有一个空格,但有时评论和IP地址之间的空格更多。我的想法是从第一个空间的位置开始,并删除IP地址的所有内容,格式为xxx.xxx.xxx.xxx。另外,有一些技巧是我有一个默认路由(0.0.0.0)所以我还需要检查IP地址的第一个八位字节在点之前有一个最多三位数。 输出应该是,每行
username IPaddress
有一个空格。
当我做$array.GetType()
这就是我得到的
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
我想-replace
可以帮助我,但我的所有正则表达式结果都会失败。
答案 0 :(得分:1)
你的正则表达式看起来像这样:
^(\w+).*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
现在您可以捕获用户名和IP并用以下内容替换整个字符串:
$test= @(
'jdoe (comment missing) 0.0.0.0'
'jdoe2 This is jdoe2 192.168.0.1'
)
$test -replace '^(\w+).*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', '$1 $2'
<强>输出:强>
jdoe 0.0.0.0
jdoe2 192.168.0.1