尝试选择一个返回单词和数字但不删除其余输出内容的字符串。
现在我有以下内容:
print ((df['field_1'] + df['field_2']).to_string(header=False, index=False)))
我能够在输出中提取所有包含TRANS字词的交易,但例如也去除了99和97。
目标:字符串能够捕获TRANS12,TRANS13并返回到名为August的交易类别。事务99和97将被拉到另一个类别中,称为另一个数组。答案 0 :(得分:2)
您可以使用Select-String
cmdlet来检索相关值来简化匹配:
$InStuff | Select-String $TargetPattern -AllMatches | Foreach-Object {$_.Matches.Value}
注意:语法$_.Matches.Value
(称为“ 属性枚举”)要求PSv3或更高版本,
对于PSv2,请使用Select-Object -ExpandProperty
cmdlet参数。
答案 1 :(得分:1)
我对严格的正则表达式解决方案[ blush ]不满意,因此使用了非常简单的正则表达式模式。如果您可以让正则表达式母版为您提供复杂的模式,则速度可能会更快。
代码做什么...
trans
和一个或多个数字。 -match
处理集合的方式来获取包含目标模式的任何行,
[空格然后逗号]上分割$TargetItems
集合这是代码...
# fake reading in a text file
# in real life, use Get-Content
$InStuff = @'
Associations : 1, 2, 3, 4
Transactions: 20, 21, 22
Associations : 5, 6, 7, 8
Transactions, 99, TRANS12, TRANS13, 97
'@ -split [System.Environment]::NewLine
$TargetPattern = 'trans\d{1,}'
$TargetItems = ($InStuff -match $TargetPattern -split ', ').
Trim().
Where({
$_ -match $TargetPattern
})
$TargetItems
输出...
TRANS12
TRANS13