2017-08-10 137 views
1

我有一個包含字母或數字和破折號的標識符。 我想要做的是在第一個短劃線之前保留前3個字母,並刪除其餘的部分,然後在第一個短劃線之後保留2個第一個字母。RegEx保留前3個字符並刪除其餘

舉例來說,我有以下ID:

9D3236A9-B496-4597-87E4-3A3FB69D07BF 

輸出ID應該是:9D3B445873A3

我曾嘗試:

^.{3}\- 

但沒有任何反應。你能幫忙嗎?

+0

你在最新的部分保留三個字母'3A3'。這是你慾望輸出的一部分嗎? – Kasramvd

+0

它可能看起來像[this](https://regex101.com/r/IkiOer/1)。或者像[this](https://regex101.com/r/IkiOer/3)。或者[這個](https://regex101.com/r/IkiOer/4)。那麼,你的(沒有破折號)評論是不明確的。如果你需要'9D3B445873A3',只需說明你需要這個輸出。 –

+0

@WiktorStribiżew很棒的答案。我需要你給我的正則表達式,但輸出不應該有任何破折號。它應該是你在最後一行中提到的。 (9D3B445873A3)你認爲你也可以爲它提供一個正則表達式嗎? – JustCodingPlease

回答

1

您可以使用

^([A-Za-z0-9]{3})[A-Za-z0-9]*|-([A-Za-z0-9]{3})[A-Za-z0-9]*$|-([A-Za-z0-9]{2})[A-Za-z0-9]* 

$1$2$3更換。請參閱regex demo

詳細

  • ^ - (在替換$1)第1組 - 串 開始
    • ([A-Za-z0-9]{3}):3個字母數字字符
    • [A-Za-z0-9]* - 0+字母數字
  • | - 或
    • - - 連字符
    • ([A-Za-z0-9]{3}) - (在替換$2)第2組:3個字母數字字符
    • [A-Za-z0-9]* - 0+字母數字
    • $ - 串的端
  • |
    • - - 連字符
    • ([A-Za-z0-9]{2}) - 第3組($3在更換):2個字母數字字符
    • [A-Za-z0-9]* - 0+字母數字。
0

您可以使用給定的正則表達式在這個demo

(^.{3})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-zA-Z0-9]* 
相關問題