2014-10-09 41 views
0

我需要開發的正則表達式這個模式:錯誤在查找文件的正則表達式按照一個模式

模式:

201410021600(12號) - 只有兩個選擇A或B_(ZZ總是 相同)616048(6號)_BBBB(4個字符)-123456ABCDEF(12 alfanumeric)_OUT(總是相同).PDF(總是相同)

真實的例子:

201410021600-A_ZZ123456_BBBB-123456ABCDEF_OUT.pdf。

這是我的嘗試,但沒,T工作:(:

\d{12}-{1}A_{1}\bZZ\b\d{6}_{1}\d{4}-{1}\w{12}_{1}\bOUT.pdf\b 

有人能幫助我,請

+0

\ d {12} - {1} A_ {1} \ bZZ \ b \ d {6} {1} \ d {4} - {1} \ w {12} _ {1} \ bOUT.pdf \ b – Niru 2014-10-09 10:41:01

+1

這個'BBBB(4個字符)'是什麼意思? – 2014-10-09 10:44:38

回答

1

你並不需要指定數量爲1,即代替-{1}_{1}只是-_就足夠了。

此外,您在此指定數量爲兩次:\d{6}{1}這不是必需的。

三,\b標誌着一個詞的邊界,這意味着至少需要一些空白。因此\bZZ\b將不符合您的輸入。

應用這一切,你的正則表達式看起來像這一點,應該工作:\d{12}-[AB]_ZZ\d{6}_[A-Z]{4}-[A-Z0-9]{12}_OUT\.pdf

進行分解:

  • 201410021600(12 Numbers) - >\d{12}
  • -Only two options A or B - >-[AB]更新:從您的看起來好像AB是單詞而不只是字符,所以你不能在這裏使用字符類,但需要使用ag相反,例如-(?>A|B)(?>...)表示該組未捕獲,即無法使用Matcher.group(x)等檢索該組。)
  • _(ZZ always same) - >_ZZ
  • 616048(6 numbers) - >\d{6}
  • _BBBB(4 characters) - >_[A-Z]{4}(I假定僅大寫字符被允許)
  • -123456ABCDEF(12 alfanumeric) - >-[A-Z0-9]{12}(在情況下,只有大寫字符被允許)
  • _OUT(always same) - >_OUT
  • .pdf(always same) - >\.pdf(點匹配任何字符s ·其需要轉義)

如果情況不是問題,即,如果201410021600-a_zz123456_bbbb-123456abcdef_out.pdf.應匹配,以及,然後或者添加a-z到字符類,應允許下殼體(例如[a-zA-Z]而不是[A-Z]),或者在表達式的前面添加(?i)(如果始終允許使用小寫)。

+0

謝謝你的完美! - 只有兩個選項A或B - > - [AB],我必須改變那些像ON或OFF這樣的詞,我用[ON | OFF]但沒有工作:(錯誤在哪裏? – 2014-10-09 12:09:37

+0

@JOANA_Batista'[...]'是一個字符類,所以不能用於較大的匹配,將其改爲'(?> ON | OFF)在非捕獲組中定義這些選項。 – Thomas 2014-10-09 13:36:38

0

試試這個模式:

Pattern p =Pattern.compile("\\d{12}-[AB]_ZZ\\d{6}_\\w{4}-\\w{12}_OUT.pdf"); 
+0

謝謝你的完美! :D – 2014-10-09 12:10:16

0
^\d{12}-[AB]_ZZ\d{6}_[a-zA-Z]{4}-[a-zA-Z0-9]{12}_OUT\.pdf$ 

試試這個。驗證你的所有規則。

http://regex101.com/r/iM2wF9/19

+0

感謝作品完美! :D – 2014-10-09 12:10:48

+0

@JOANA_Batista歡迎你 – vks 2014-10-09 12:11:33