你並不需要指定數量爲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]
更新:從您的看起來好像A
和B
是單詞而不只是字符,所以你不能在這裏使用字符類,但需要使用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)
(如果始終允許使用小寫)。
\ 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
這個'BBBB(4個字符)'是什麼意思? – 2014-10-09 10:44:38