Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 正则表达式以消除Powershell中数组中的字符串部分_Arrays_Regex_Powershell - Fatal编程技术网

Arrays 正则表达式以消除Powershell中数组中的字符串部分

Arrays 正则表达式以消除Powershell中数组中的字符串部分,arrays,regex,powershell,Arrays,Regex,Powershell,我有一个字符串数组,我想消除该数组中每个字符串的一部分,但是我在使用正则表达式时遇到了问题 每个字符串的格式如下所示: username comment IPaddress username2 comment IPaddress 不幸的是,在某些行中,用户名和注释之间有不止一个空格。此外,在注释和IP地址之间至少有一个空格,但有时更多。我的想法是从第一个空格的位置开始,删除IP地址之前的所有内容,该地址为xxx.xxx.xxx.xxx格式。另外,诀窍是有些人我有一个默认路由(0.0.0

我有一个字符串数组,我想消除该数组中每个字符串的一部分,但是我在使用正则表达式时遇到了问题

每个字符串的格式如下所示:

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
应该对我有帮助,但是我所有的正则表达式结果都失败得很惨。

你的正则表达式可能是这样的:

^(\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

您能否提供默认路线的示例?还有,你想跳过它们吗?不,我不想,我想删除每一行的注释。这里是一个例子
jdoe(注释缺失)0.0.0.0
jdoe2这是jdoe2 192.168.0.1
我只想删除用户名中最后一个字符的所有内容(或者从第一个空格到IP地址的所有内容),所以我只有
jdoe 0.0.0
谢谢!