使用Regex和PowerShellreplaceCSV中的多个行模式?

我有一个Excel文件,其中包含数千行数据,我使用各种PowerShell脚本从SharePoint服务器中检索数据。

行的内容结构非常相似:

General/Categoryname /ADMIN_XXXX_YEAR(random stuff here)/more_random_stuff_here.filetype 

问题是我需要过滤除了ADMIN_XXXX_YEAR(randomstuffhere)部分的所有内容。

就正则expression式而言,我会看到类似于:

http://www.regexper.com/#General \%2F%28 \ w%2B%29 \%2F%28 \ w%2B%29_%28 \ d%2B%29_%28 \ d%2B%29 \%28%28%* 29 \ 29%

(尽pipe公平(\w+)\/(\w+)_(\d+)_(\d+)\((.*)\)应该足够了)。

是的,我知道我的正则expression式并不是一stream的,但expression式通常会达到我需要的目的,因为它会find我所需要的。 这里的问题大部分来自于我在StackExchange上所了解和search的内容,如果没有VBA脚本,就无法将其应用于Excel。 有内部的search和查找,虽然我不清楚如何执行这样的search将起作用。 也许有一种方法在PowerShell中做到这一点,我不知道?

如果有人有一些可以帮助我的信息材料,我将不胜感激。

可以在Excel中使用如下公式完成:

 =MID(A1,FIND("ADMIN",A1),FIND("/",A1,FIND("ADMIN",A1))-FIND("ADMIN",A1)) 

假设应用于单元格A1。

或者使用带有/作为分隔符的文本到列,并删除剩余。

只是为了说明import-csvbuild议,你可以尝试类似的东西

 [System.Collections.ArrayList]$output = @() $csv = import-csv yourCSVfile.csv foreach ($row in $csv) { $string = select columnName $parts = $string -split "/" $output.add($parts[2]) } $output 

假设你的string,

一般/类别名称/ ADMIN_XXXX_YEAR(这里是随机的东西)/more_random_stuff_here.filetype

是csv中的一列,你的部分一直跟着第二个斜线。 如果您的斜线在csv中分隔列,您可以执行$output.add($string)并跳过$parts东西。