我有以下字符串:從正方括號中取出字符串的正則表達式?
「龍紋身(LISBETH)女孩」
,我需要在輸入端得到只有字符串中的括號 。
到目前爲止,我來到了這一點:
public static void main(String[] args) {
Pattern pattern =
Pattern.compile("\\({1}([a-zA-Z0-9]*)\\){1}");
Matcher matcher = pattern.matcher("The girl with the dragon tattoo (LISBETH)");
boolean found = false;
while (matcher.find()) {
System.out.println("I found the text " + matcher.group()
+ " starting at " + "index " + matcher.start()
+ " and ending at index " +
matcher.end());
found = true;
}
if (!found) {
System.out.println("No match found");
}
}
但作爲一個結果,我得到:(LISBETH)
。
如何擺脫這些括號?
謝謝!
+1,但不是正面看起來後面有等號「(?<= \\()'? – 2012-04-03 09:07:16
@PetarMinchev當然你是對的,更正了。 – stema 2012-04-03 09:08:09
我的一般技巧:*不要使用lookarounds當你不需要的時候*不僅會使表達式不必要地複雜化,而且在某些情況下它也是錯誤的。在這種情況下它可以正常工作,但是例如,如果你想查找帶引號的子字符串,例如'(? <=「)[^」] *(?=「)'你會得到無效的結果,在''foo」bar「baz」中會找到'foo','bar'和'baz'。 – Qtax 2012-04-03 09:22:50