我需要從excel文件中的列中精確提取7位或8位數字,並且需要丟棄任何數字更多的號碼。正則表達式提取正好8位數字或正好7位數字,如果數字有更多數字,則丟棄
例如,假設這些都是一些的值
2569123659的| > 8位數字以後不提取
2456789 | 2456789 | Extract 7 digit no
15034891 | 15034891 |提取8位數沒有
2569123659 45785612 | 45785612 |僅提取8位數字否
2456789 2569123659 | 2456789 |只提取7位數字沒有
ABC#2456789 | 2456789 |僅提取數字
ABC15034891DSC | 15034891 |僅提取數字
ABC15034891 ### | 15034891 |僅提取數
以下是一些表達式的我試圖
strPattern =「[0-9] {7}([0-9] {1})?「
結果:錯誤的結果
2569123659 | 2456789
2456789 | 15034891
15034891 | 25691236
2569123659 45785612 | 2456789
2456789 2569123659 | 2456789
ABC#2456789 | 2456789
ABC15034891DSC | 15034891
ABC15034891 ### | 15034891
strPattern = 「(\ d {8} | \ d {7})」
結果:仍然是錯誤的結果
2569123659 | 25691236
2456789 | 2456789
15034891 | 15034891
2569123659 45785612 | 25691236
2456789 2569123659 | 2456789
ABC#2456789 | 2456789
ABC15034891DSC | 15034891
ABC15034891 ### | 15034891
幫我修正這個reg表達式,以便處理場景。我只需要提取正確的數字。我需要避免從另一個數字提取更多數字。
任何形式的幫助將不勝感激。預先
由於基於這裏提供的答案
我還試圖
strPattern = 「\ B(\ d {7,8})\ B」
結果仍然錯誤結果
25 69123659 |
2456789 | 2456789
15034891 | 15034891
2569123659 45785612 | 45785612
2456789 2569123659 | 2456789
ABC#2456789 |
ABC15034891DSC |
ABC15034891 ### |
還沒準確
Stribizew謝謝,但不適用於以下情況ABC#2456789 ABC15034891DSC ABC15034891 ### – eccentricCoder
@eccentricCoder [它適用於這些情況](https://regex101.com/r/AuH2zo/1/)。 –
對於上面提到的情況,它返回數字以及附加的#或字母,例如用於ABC#2456789它返回ABC#2456789,對於ABC15034891DSC它返回C15034891並且對於ABC15034891 ###它返回C15034891 – eccentricCoder