java 正匹配两个括号中间的字符串,不包括两个括号,怎么写?

如:max(A+B+C),用正则匹配出来A+B+C或者<p>ABCDEFG</p>用正则匹配<p></p>,中间的内容正则表达式要怎么写?... 如:max(A+B+C),用正则匹配出来A+B+C
或者<p>ABCDEFG</p> 用正则匹配<p></p>,中间的内容
正则表达式要怎么写?
展开
 我来答
enolong
2012-10-17 · TA获得超过1174个赞
知道小有建树答主
回答量:590
采纳率:100%
帮助的人:368万
展开全部
取括号里的正则:.*?\\((.*?)\\).*?
取标签中间内容:<p>(.*?)</p>
追问
.*后面跟的问号,是什么意思,能给我解释一下这个正则表达式吗?
前面.是任意字符,任意多个,?号是什么意思?

我试了一下,这是匹配整个字符串呢,比如max(A+B),把max(A+B)都匹配出来了,其实我想要括号里面的A+B,要怎么搞?
追答
Pattern pattern1 = Pattern.compile(".*?\\((.*?)\\).*?");
Matcher matcher1 = pattern1.matcher("max(A+B)");
if (matcher1.matches()) {
System.out.println(matcher1.group(1));
}
输出结果:A+B
Pattern pattern1 = Pattern.compile("(.*?)
");
Matcher matcher1 = pattern1.matcher("ABCDEFG
");
if (matcher1.matches()) {
System.out.println(matcher1.group(1));
}
输出结果:ABCDEFG
这两个都没问题啊。
这个.是任意字符,*是一个或多个字符,?是零个或一个字符,.*?合起来就表示零个或一个或多个任意字符。所以.*?\\((.*?)\\).*?得意思就是:前面有零个或一个或多个任意字符接着来一个左括号,然后左括号后又是零个或一个或多个任意字符,然后接一个右括号,然后右括号后又是零个或一个或多个任意字符,然后括号里的那个括号是(即内层括号)用于matcher1取集合的括号,跟正则匹配无关,没有被认为是正则表达式的内容,而外层括号我前面加了\\表示把这个括号转义成正则内容的一部分,也是这个正则表达式唯一的出发点。你主方法复制这两个方法跑 一下呢,为什么我的是对的?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式