关于Java正则表达式,一对括号里面加任意字符的正则表达式怎么表示?

比如(id,name,salary,email),([(].+[)])我这样写是不可以的,我尝试过\\(,貌似也不可以。

第1个回答  2014-03-14
String s1 = "abc1(id,name,salary,email)12()7**)";
String r1 = "[\\s\\S]*(\\([^\\)]+\\))[\\s\\S]*";
System.out.println(s1.matches(r1));
System.out.println(s1.replaceAll(r1, "$1"));

追问

  你好!可以做成这样吗? 麻烦帮忙改一下代码,谢谢!


       

追答String sql = "insert into employee(id, name, salary, email) values (0, ejdef, 2, fefefe)";
String rx = "\\([^\\)]+\\)";
Pattern pattern2 = Pattern.compile(rx);
Matcher matcher2 = pattern2.matcher(sql);
while(matcher2.find())
{
    System.out.println(matcher2.group());
}

追问

这样的结果是这样的:
0
(id,name,salary,email)
(0,ejdef,2,fefefe)
但不是我想要的啊

追答

我不明白你想要什么啊, 你不是说要括号的么,不都是括号么

追问

匹配第一个满足括号的即:(id,name,salary,email),然后通过group下标可以分成三部分,分别是“(”,id,name,salary,email,和“)”。

就像如果用这个“(insert into)(.+)([(])”,上面的程序就可以把insert into employee(匹配出来,然后还可以通过下标,分成insert into,employee,(,三部分

追答

不明白,怎么又扯上insert into 了

追问

http://pan.baidu.com/s/1hq3ePY8
帮忙看看这个例子,就是把insert into employee(的效果,变成(id,name,salary,email)的效果。

追答package web;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestPatternMatcherInsert
{
public static void main( String[] args )
{
String sql = "insert into employee(id,name,salary,email) values (0,ejdef,2,fefefe)";
String regex = "(\\()([\\w,]+)(\\))";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sql);
if (matcher.find())
{
String group = matcher.group();
System.out.println(group.replaceAll(regex, "$1"));
System.out.println(group.replaceAll(regex, "$2"));
System.out.println(group.replaceAll(regex, "$3"));
}
}
}

本回答被提问者和网友采纳
第2个回答  2014-03-14
^\(.*\)$

看看。

为什么加中括号? 中括号一般用来代表一个字符集吧追问

String RegExp="^\(.*\)$ ";这是什么,报错。。

追答

"\\(.*\\) "

java里面 \ 是转义字符 需要写两次。

另外,如果任意字符要匹配1次以上,.* 也可以换成 .+

如果括号中的内容需要排除括号的话,可以像下面这么写
"\\([^\\(\\)]*\\) "

我手头没有java环境,希望能帮到你。

第3个回答  2014-03-14
\\([\\w\\W&&[^()]]+\\)追问

不可以

追答

我的是可以的
public static void main(String[] args) {
String regex="\\([\\w\\W&&[^()]]+\\)";
String input="(d)fsasfaa(dsf dasfkljdfkl)ddd(sf)dasf";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(input);
while(m.find()){
System.out.println("匹配子串:"+m.group(0));
}
}

结果:
匹配子串:(d)
匹配子串:(dsf dasfkljdfkl)
匹配子串:(sf)

追问

你好!可以做成这样吗? 麻烦帮忙改一下代码,谢谢!


      

相似回答