我想弄清楚如何編寫一個正則表達式來匹配包含任意數量的非括號字符的4組括號。Java正則表達式:與多組括號匹配一個字符串
例如,這些應該匹配。
[hello][world][foo][bar]
[][][][]
但這些不應該:
[a][b][c]
[a][b][c][d]e
[[a]][b][c][d]
如果我沒有記錯的話,這個(下)似乎匹配括號的一組和中的人物。
\\[[^\\[\\]]*\\]
我認爲我可以通過執行以下操作將它擴展到4組,但它不起作用。
[\\[[^\\[\\]]*\\]]{4}
我在這裏錯過了什麼?預先感謝您的幫助。我很感激。
感謝您的詳細回覆。當我使用方括號或括號時,我很困惑。 「[^ \\\ [\\\]] *」=零個或多個非括號字符,但「(abc){4}」= abc四次。什麼時候應該與其他人一起使用? – Dazarath 2012-04-12 21:47:28
@Dazarath:重複/量詞運算符('?','+','*','{n,m}')作用於前一個*標記*,並捕獲組「(...)」和字符類'''兩者恰好是令牌。事實上,使用捕獲組(或非*捕獲組(*:...)')通常是因爲它在一個序列中創建了一個記號。所以,如果你想匹配單詞「foo」任意多次,你不能說'foo *'因爲前一個記號是'o',所以你需要說'(foo)*'。 – maerics 2012-04-12 21:58:04