gpt4 book ai didi

regex - Powershell 正则表达式问题。转义括号

转载 作者:行者123 更新时间:2023-12-01 22:46:54 25 4
gpt4 key购买 nike

一整天都在为这个问题苦思冥想,我已经接近了,但还没有完全实现。对于正则表达式部分,我有一个更大的脚本的一小部分。这是到目前为止的脚本:

  
$CCI_ID = @(
"003417 AR-2.1"
"003425 AR-2.9"
"003392 AP-1.12"
"009012 APP-1(21).1"
)


[regex]::matches($CCI_ID, '(\d{1,})|([a-zA-Z]{2}[-][\d][\(?\){0,1}[.][\d]{1,})') |
ForEach-Object {
if($_.Groups[1].Value.length -gt 0){
write-host $('CCI-' + $_.Groups[1].Value.trim())}
else{$_.Groups[2].Value.trim()}
}

CCI-003417
AR-2.1
CCI-003425
AR-2.9
CCI-003392
AP-1.12
CCI-009012
PP-1(21
CCI-1


The output is correct for all but the last one. It should be:

CCI-009012
APP-1(21).1

Thanks for any advice.


最佳答案

与其分别描述和量化(可选的)左括号和右括号,不如将它们组合在一起,然后使整个组成为可选的:

(?:\(\d+\))?

整个模式最终看起来像这样:

[regex]::Matches($CCI_ID, '(\d{1,})|([a-zA-Z]{2,3}[-][\d](?:\(\d+\))?[.][\d]{1,})')

关于regex - Powershell 正则表达式问题。转义括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75077070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com