regex 在文件powershell中查找模式

x8diyxa7  于 2022-12-05  发布在  Shell
关注(0)|答案(3)|浏览(148)

我有这个模式,由数量,描述和价格组成。请不要数字和文字每次都会改变。
我需要使用powershell来查找和保存结果。到目前为止我得到了这个...模式格式是让我抓狂的东西。

$example_line = '3.00 CEBICHE CORVINA PI   26,805.00'
$pattern= '\d.\d\d \D'
$results = $example_line | Select-String $pattern -AllMatches
$results.Matches.Value

任何帮助都是感激不尽的。
提前感谢!
编辑。看到答案后,我尝试regex来构建数组。
我不知道为什么它不为我工作...我阅读txt文件,我得到的结果,但当我想看到的数组,我没有得到任何数据。
例如,我用这个将所有匹配的行保存到数组中
函数pasar_a_word($archivo){

$content = Get-Content $root\UNB\FACTURA_FINAL\$archivo
$pattern = '(\d\.\d\d) (\D+?) (\d+,\d\d\d\.\d\d)'

Write-Host "FUNCION PASAR A WORD"

for($i = 0; $i -lt $content.Count; $i++){
 
   $line = $content[$i]     
   $results = ([regex]::Matches($line, $pattern)).Value       
   }

   Write-Host $results[1]  }
p1iqtdky

p1iqtdky1#

编码:

$example_line = '3.00 CEBICHE CORVINA PI   26,805.00'

# Expression Pattern
$pattern = '(\d\.\d\d) (\D+?) (\d+,\d\d\d\.\d\d)'

# Use the -match operator to match the string against the pattern
$match = $example_line -match $pattern

# If the match is successful, extract the three captured groups
if ($match) {
    $quantity = $matches[1]
    $description = $matches[2]
    $price = $matches[3]

    # Print the extracted values
    Write-Output "Quantity: $quantity"
    Write-Output "Description: $description"
    Write-Output "Price: $price"
}
xlpyo6sf

xlpyo6sf2#

您可以使用regex静态.Matches()方法来执行此操作:

$string  = '2.00 CAUSA PERUANA GRAN 32,504.00 1.00 ENSALADA QUINUA 7,309.00'
$results = ([regex]::Matches($string, '(\d\.\d{2}\s[\w\s]+\d+,[\d.]+)')).Value

# $results[0] --> 2.00 CAUSA PERUANA GRAN 32,504.00
# $results[1] --> 1.00 ENSALADA QUINUA 7,309.00
yhuiod9q

yhuiod9q3#

正确的模式是

$pattern= '\d.\d\d \D* \d*,\d*.\d*'

相关问题