我目前正在使用這個正則運算式來隔離 5 個數字值,而不是數字、破折號和句點。此外,我還試圖找出一種方法來解釋 - 也排除那些包含區分大小寫的 WO 或 PO 的方法。我只是嘗試了將 SO 和 PO 作為檢查條件的不同變化,但每次都失敗。
(?<![-0-9.])[0-9]{5}(?![-0-9.])
電流輸出 - 不需要
asdkjflsdf 12345 good
asdfsdf 1234asdfsdf bad
12345 good
.12345. bad
-12345 bad
SO 12345 good
123456 ppp bad
1234 bad
PO12345 good <--
Wo 12345 good <--
輸出 - 所需
asdkjflsdf 12345 good
asdfsdf 1234asdfsdf bad
12345 good
.12345. bad
-12345 bad
SO 12345 good
123456 ppp bad
1234 bad
PO12345 bad <--
Wo 12345 bad <--
任何幫助將不勝感激。謝謝
uj5u.com熱心網友回復:
正如ti7所建議的,兩遍方法確實可能提供最簡單的解決方案:
'asdkjflsdf 12345',
'asdfsdf 1234asdfsdf',
'12345',
'.12345.',
'-12345',
'SO 12345',
'123456 ppp',
'1234',
'PO12345',
'Wo 12345',
'CompanName WO# 12345' |
ForEach-Object {
[pscustomobject] @{
Input = $_
Result = $_ -match '(?<![-0-9.])[0-9]{5}(?![-0-9.])' -and $_ -notmatch '[wp]o'
}
}
輸出:
Input Result
----- ------
asdkjflsdf 12345 True
asdfsdf 1234asdfsdf False
12345 True
.12345. False
-12345 False
SO 12345 True
123456 ppp False
1234 False
PO12345 False
Wo 12345 False
CompanName WO# 12345 False
uj5u.com熱心網友回復:
您可以使用
(?<![-0-9.])(?<![PpWw][Oo])(?<![PpWw][Oo]\s)[0-9]{5}(?![-0-9.])
請參閱正則運算式演示。
添加了兩個負面的lookbehinds:
(?<![PpWw][Oo])- 在當前位置之前,應該沒有PO或WO(不區分大小寫)子字串(?<![PpWw][Oo]\s)- 在當前位置之前,應該沒有PO或WO(不區分大小寫)子字串后跟一個空格。
uj5u.com熱心網友回復:
您可能可以使用更簡單的正則運算式,然后進行第二輪排除不需要的集合
第 1 輪(正好 5 位數字,有單詞邊界)
^.*\b\d{5}\b.*$
第 2 輪(排除任何不需要的匹配項)
(?![WwPp][Oo])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495206.html
