2012-09-14 81 views
-1

我試圖像下面的字符串相匹配:正則表達式模式不工作,爲什麼?

"§{characters.characters}" 
"§{characters_characters}" 
"§{characters_characters.characters}" 

我這樣做:

Pattern.compile("\\§\\{[a-zA-Z]+([_\\.][a-zA-Z]+)*\\}") 

不過,這並不在所有的工作。有人知道爲什麼

如果我把Pattern.compile("\\§\\{([a-zA-Z]+)([_\\.][a-zA-Z]+)*\\}")只有像「字符」的字符串都可以。但不明白爲什麼要麼...

+0

怎麼樣'\\ {'&'\\}'? –

+2

這個工具可能是有用的:http://www.regexplanet.com/advanced/java/index.html –

回答

3

以符合您的測試串

[a-zA-Z]+([_\\.][a-zA-Z]+)* 

作品就好了,\\§\\{\\}不是在您的測試字符串中的字符,所以它們不匹配,你的正則表達式是尋找類似

\§\{characters_characters.characters\} 

http://regexr.com?325e8

和看到[a-zA-Z]+([_\\.][a-zA-Z]+)*在行動在http://regexr.com?325ee


編輯

按您的評論,§{([a-zA-Z]+)([_\\.][a-zA-Z]+)*}應該這樣做http://regexr.com?325gp

+0

謝謝,只是忘了字符§{和}在我想匹配的字符串...將檢查您的網址。我編輯了我原來的帖子。 – Lyth

+0

@Lyth使用'§{([a-zA-Z] +)([_ \\。] [a-zA-Z] +)*}',我已經更新了我的答案和演示 – JKirchartz

+0

我嘗試了我得到的工具,結果發現我的Pattern.compile(「\\§\ \\ {([a-zA-Z] +)([_ \\。] [a-zA-Z] +)* \\}「)應該起作用,因爲模式\ {{[a-zA-Z] +)([_ \。] [a-zA-Z] +)* \}匹配char.char_char等字符串。然後,你的工具顯示§{([a-zA-Z] +)([_ \。] [a-zA-Z] +)*}也可以。當我嘗試這一個時,我的程序中出現錯誤「索引0附近的非法重複」。當我使用第一個字符串時,某些字符串不會像簡單的「test_string」那樣匹配... – Lyth

相關問題