捕获CSV中的特定字符串



我试图在CSV字段中捕获特定的字母和数字序列。该字段可以包含以下内容:

一些随机文本WMM540"& lt;单元格文本

编辑:这是原始的csv:

Employee ID,First Name,Surname,Base Store Code,Job Title  
555555,Mark,Testing-Process,Mo Newcastle Under Lyme WMM222,Merchandiser  
555556,Carly,O'Test,AS Congleton ASD1111,Supervisor

我需要在变量中捕获WMMXXX(其中X是数字),但可以有更多代码。我需要得到的可能的代码是:

WMMXXX  
MORXXX  
ASDXXXX (4 digits instead of 3)  
WILXXX  
PLDXXX  
SUPXXX  

. .还有更多。

我知道你可以使用正则表达式拆分和隔离文本,但我没有足够的经验。
最后我需要一个变量,看起来像:$v = 'WMMXXX'

请你帮忙好吗?

多谢

把我的评论变成答案

因为你显然只想找到非常具体的代码,你可以这样做:

$regex = '((?:WMM|MOR|WIL|PLD|SUP)d{3}|ASDd{4})'
Import-Csv -Path 'PathToTheFile.csv' | ForEach-Object {
if ($_.'Base Store Code' -match $regex) { $matches[1] }
}

备注:

  • 听起来您最终需要一个正则表达式来提取感兴趣的子字符串,如Theo的有用答案所示。

  • 这个答案显示了一种简化的方法,该方法基于以下假设:感兴趣的子字符串总是感兴趣列中最后一个以空格分隔的令牌。


使用Import-Csv,提取感兴趣的列值(列Base Store Code),并从每个列中提取最后一个空格分隔的令牌,这是-split的一元形式,字符串分割运算符允许您做的(索引[-1]返回结果数组的最后一个元素):

Import-Csv in.csv | ForEach-Object { (-split $_.'Base Store Code')[-1] }
以您的样例数据作为输入,这将产生:
WMM222
ASD1111

相关内容

  • 没有找到相关文章

最新更新