2016-09-19 48 views
0

我需要匹配的可變長度的字符串(5和12之間),大寫字母和一個或1和8之間 多個數字組成如何指定我需要的全被抓的小組的長度是在5和12之間? 我嘗試過括號,但沒有運氣。 我已經試過這紅寶石正則表達式指定捕獲的組的長度

\s([A-Z]+[1-8]+[A-Z]+){5,12}\s 

我的想法是使用量詞{5,12}限制括號之間的捕獲組的長度,但顯然它不喜歡的工作。

的字符串需要一個普通的文本中被識別,就像

"THE STRING I NEED TO DECODE IS SOMETHING LIKE FD1531FHHKWF BUT NOT LIKE g4G58234JJ" 
+0

請顯示你的嘗試,所以我們可以看到你的正則表達式有什麼問題。另外,您還應該發佈一個或多個樣本字符串和期望的輸出。 – Stefan

+0

在'「THE STRING ..」'中,爲什麼''4G58234JJ「'不匹配?爲什麼'FD1531'和'FHHKWF'不匹配? 「FFFFFF」是匹配嗎? ' 「88888888」'? ' 「111AAA」'?或者必須將字符串的形式設爲'[A-Z] + [0-9] + [A-Z] +'?你想返回所有比賽還是隻返回第一個?請編輯以澄清(即使您選擇了答案,因爲您的問題將來我會被多次閱讀)。 –

回答

2

你實際上有兩個條件滿足:

本場比賽的長度是用兩個大括號{5,12}指定,並且之前和之後應該沒有字母/數字。所以:

/(?!\b[A-Z]+\b)\b[A-Z1-8]{5,12}\b/ 

首先,我們確保只有字母的預測是負值,然後我們尋找模式。

+0

這幾乎確定,但它也捕捉普通字符串,如果他們是5和12的捕捉需要包含1和8之間 – Jack

+0

大寫字母和數字,你最好從臨時指定的條件,以避免不必要的雙重工作之間那些幫助你的人。請檢查更新。 – mudasobwa

+0

謝謝你,併爲此感到遺憾!這正是我所期待的! 只是出於好奇:有沒有什麼辦法可以像我想要做的那樣計算一個組的長度?那是/([a-z] + [1-8] +){5,} /只保留長度爲5或更長的匹配? 再次感謝您 – Jack