2014-12-04 305 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