比如有一个字符串:
String str = "start(aaa)";pattern我写成这样:
java.util.regex.Pattern p = java.util.regex.Pattern.compile("^values(aaa)&");boolean b = str.matches(str);
System.out.println(b);
打印出来的是:false
我想知道pattern如何写,b的值才能等于true
在线等,谢谢!!!!

解决方案 »

  1.   

    没错,\在java中本身也是转义符嘛....你要用\这个字符,当然要转义了...
      

  2.   

    Pattern p = Pattern.compile("start\\(aaa\\)");
    String str = "start(aaa)";
    boolean b = str.matches(str);
    System.out.println(b);b的值依然是false
      

  3.   

    你代码写的有问题,str.matches(str)这是干什么?简单点直接写System.out.println(str.matches(("start\\(aaa\\)"));
      

  4.   

    boolean b = str.matches("start\\(aaa\\)",str);
    或者
    Pattern p = Pattern.compile("start\\(aaa\\)");
    String str = "start(aaa)";
    Matcher m=p.matcher(str); 
    System.out.println(m.find());
      

  5.   

    我建议你去google里面搜索“转义字符”的写法,
    里面有很多的列表,好好学学吧!
      

  6.   

    boolean b = str.matches("start\\(aaa\\)",str);
    不对应该是
    boolean b = p.matches("start\\(aaa\\)",str); 
      

  7.   

    Pattern p = Pattern.compile("start[(]aaa[)]"); 
      

  8.   

    大侠们也帮我分析一下我的问题吧,谢谢
    java正则挖取建表语句:
    -------------------------------------------------
    -- Export file for user SSTEST --
    -- Created by SINO_PING on 2012-7-30, 18:16:27 --
    -------------------------------------------------spool ciinsureriskwarning.logprompt
    prompt Creating table CIINSURERISKWARNING
    prompt ==================================
    prompt
    create table CIINSURERISKWARNING
    (
      DEMANDNO VARCHAR2(50) not null,
      SERIALNO NUMBER not null,
      RISKWARNINGTYPE VARCHAR2(2),
      CLAIMCODE VARCHAR2(50),
      COMPANYID VARCHAR2(8),
      ACCIDENTTIME VARCHAR2(20),
      ACCIDENTPLACE VARCHAR2(100)
    )
    ;
    comment on column CIINSURERISKWARNING.DEMANDNO
      is '查询码';
    comment on column CIINSURERISKWARNING.SERIALNO
      is '序号';
    comment on column CIINSURERISKWARNING.RISKWARNINGTYPE
      is '风险警示类型';
    comment on column CIINSURERISKWARNING.CLAIMCODE
      is '理赔编号';
    comment on column CIINSURERISKWARNING.COMPANYID
      is '保险公司代码';
    comment on column CIINSURERISKWARNING.ACCIDENTTIME
      is '出险时间';
    comment on column CIINSURERISKWARNING.ACCIDENTPLACE
      is '查询码';
    alter table CIINSURERISKWARNING
      add constraint PK_CIINSURERISKWARNING primary key (DEMANDNO, SERIALNO);
    create table CIINSURERISKWARNING
    (
      DEMANDNO VARCHAR2(50) not null,
      SERIALNO NUMBER not null,
      RISKWARNINGTYPE VARCHAR2(2),
      CLAIMCODE VARCHAR2(50),
      COMPANYID VARCHAR2(8),
      ACCIDENTTIME VARCHAR2(20),
      ACCIDENTPLACE VARCHAR2(100)
    )
    ;spool off我的代码
    Pattern p = Pattern.compile("(create table \\w+\\s*\\(.+\\);)");
    Matcher m = p.matcher(buffer.toString());
    while(m!=null && m.find()) {
    System.out.println(m.group());
    }
    输出结果:
    create table CIINSURERISKWARNING( DEMANDNO VARCHAR2(50) not null, SERIALNO NUMBER not null, RISKWARNINGTYPE VARCHAR2(2), CLAIMCODE VARCHAR2(50), COMPANYID VARCHAR2(8), ACCIDENTTIME VARCHAR2(20), ACCIDENTPLACE VARCHAR2(100));comment on column CIINSURERISKWARNING.DEMANDNO is '查询码';comment on column CIINSURERISKWARNING.SERIALNO is '序号';comment on column CIINSURERISKWARNING.RISKWARNINGTYPE is '风险警示类型';comment on column CIINSURERISKWARNING.CLAIMCODE is '理赔编号';comment on column CIINSURERISKWARNING.COMPANYID is '保险公司代码';comment on column CIINSURERISKWARNING.ACCIDENTTIME is '出险时间';comment on column CIINSURERISKWARNING.ACCIDENTPLACE is '查询码';alter table CIINSURERISKWARNING add constraint PK_CIINSURERISKWARNING primary key (DEMANDNO, SERIALNO);create table CIINSURERISKWARNING( DEMANDNO VARCHAR2(50) not null, SERIALNO NUMBER not null, RISKWARNINGTYPE VARCHAR2(2), CLAIMCODE VARCHAR2(50), COMPANYID VARCHAR2(8), ACCIDENTTIME VARCHAR2(20), ACCIDENTPLACE VARCHAR2(100));我想要的是只把建表语句挖出来,如下:
    create table CIINSURERISKWARNING( DEMANDNO VARCHAR2(50) not null, SERIALNO NUMBER not null, RISKWARNINGTYPE VARCHAR2(2), CLAIMCODE VARCHAR2(50), COMPANYID VARCHAR2(8), ACCIDENTTIME VARCHAR2(20), ACCIDENTPLACE VARCHAR2(100));请高手指点一下,我的正则表达式为什么达不到目标那,谢谢
      

  9.   


    String str = "create table CIINSURERISKWARNING( DEMANDNO VARCHAR2(50) not null, SERIALNO NUMBER not null, RISKWARNINGTYPE VARCHAR2(2), CLAIMCODE VARCHAR2(50), COMPANYID VARCHAR2(8), ACCIDENTTIME VARCHAR2(20), ACCIDENTPLACE VARCHAR2(100));comment on column CIINSURERISKWARNING.DEMANDNO is '查询码';comment on column CIINSURERISKWARNING.SERIALNO is '序号';comment on column CIINSURERISKWARNING.RISKWARNINGTYPE is '风险警示类型';comment on column CIINSURERISKWARNING.CLAIMCODE is '理赔编号';comment on column CIINSURERISKWARNING.COMPANYID is '保险公司代码';comment on column CIINSURERISKWARNING.ACCIDENTTIME is '出险时间';comment on column CIINSURERISKWARNING.ACCIDENTPLACE is '查询码';alter table CIINSURERISKWARNING add constraint PK_CIINSURERISKWARNING primary key (DEMANDNO, SERIALNO);create table CIINSURERISKWARNING( DEMANDNO VARCHAR2(50) not null, SERIALNO NUMBER not null, RISKWARNINGTYPE VARCHAR2(2), CLAIMCODE VARCHAR2(50), COMPANYID VARCHAR2(8), ACCIDENTTIME VARCHAR2(20), ACCIDENTPLACE VARCHAR2(100));";

    Pattern p = Pattern.compile("create\\s*table\\s*\\w+\\s*[(].+?[)]\\s*[)]");
    Matcher m = p.matcher(str);
    if(m.find()){
    System.out.println(m.group());
    }
      

  10.   

    public class ReTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "--More--(222%)";
    Pattern pattern = Pattern.compile("--More--\\(\\d{1,3}%\\)");
    Matcher macher = pattern.matcher(str);
    System.out.println(macher.matches());

    }}