2014-12-04 306 views
0

我有以下文字正則表達式,匹配的字符串也包含括號

bla bla == aaaaaa(bb)aaaaaa == bla bla 

我想查找的字符串(匹配)

== aaaaaa(bb)aaaaaa == 

我不知道有多少空間是間==和aaaaaa是,所以文本也可以是

bla bla ==   aaaaaa(bb)aaaaaa == bla bla 

在這種情況下我想匹配

==   aaaaaa(bb)aaaaaa == 

我試着用以下的正則表達式,但我意識到括號不予確認:

==(.+?)aaaaaa(bb)aaaaaa(.+?)== 

HOWTO嗎?

+1

正則表達式中是否包含'('和')'特殊字符?你如何處理特殊字符? – 2014-12-04 17:32:30

+0

你應該使用'== + aaaaaa \\(bb \\)aaaaaa + ==' – anubhava 2014-12-04 17:36:18

回答

1

如果要在字符串中匹配(),則需要在它們之前放置反斜槓字符。我想你可能要像

Pattern pat = Pattern.compile("==(.+?)aaaaaa\\(bb\\)aaaaaa(.+?)=="); 

(您需要包括反斜線兩次在字符串中,以獲得一個反斜槓到實際的模式。)

+0

謝謝你這就是它。 – 2014-12-04 17:49:00

+0

附加問題:什麼字符必須在像我的(和) – 2014-12-04 18:08:58

+0

@ user1344545(1)正則表達式中轉義(1)請參閱[javadoc](http://docs.oracle.com/javase/8/docs/api/java/ UTIL /正則表達式/ Pattern.html)。 (2)如果你不確定,你可以逃避任何不是字母的字符。 (3)查看'Pattern'中的'quote()'方法,它會自動轉義需要它的字符。 – ajb 2014-12-04 18:11:29

2

放置一個反斜槓的()前要使用它們作爲常規字符,這必須工作:

==(.+?)aaaaaa\(bb\)aaaaaa(.+?)== 
+0

謝謝你是對的。我搜索了Java字符串,這就是爲什麼我接受了AJAX。我回答你是有用的:-) – 2014-12-04 17:51:28