java正则表达式提取不起作用?

时间:2014-09-26 05:39:35

标签: java regex

我错过了什么?

这是'dataStoreConstructor'我传递给下面的方法代码 -

url='https://www.salesforce.com/services/Soap/u/26.0',corpnet_prodnet='Corpnet'


  public void registerDataStoreInRepository(String dataStoreConstructor) throws DragonException{
    String constructorPattern = "url='([^']*?)',corpnet_prodnet='([^']*?)'";
    System.out.println(constructorPattern);
    System.out.println(dataStoreConstructor);
    Pattern pattern = Pattern.compile(constructorPattern);
    Matcher matcher = pattern.matcher(dataStoreConstructor);

    SalesforceDataStore sfDataStore = new SalesforceDataStore.Builder(this, matcher.group(1), matcher.group(0)).build();
  };


这是我看到的输出 -

url='([^']*?)',corpnet_prodnet='([^']*?)'Exception in thread "main" 
url='https://www.salesforce.com/services/Soap/u/26.0',corpnet_prodnet='Corpnet'
java.lang.IllegalStateException: No match found
    at java.util.regex.Matcher.group(Matcher.java:485)
    at com.dragon.dictionary.salesforce.SalesforcePlatform.registerDataStoreInRepository(SalesforcePlatform.java:63)

2 个答案:

答案 0 :(得分:3)

正则表达式很好。请致电:

matcher.find() 

在致电matcher.group()之前。问题将会解决。

答案 1 :(得分:2)

使用此:

if (matcher.find()) {
    SalesforceDataStore sfDataStore = new SalesforceDataStore.Builder(this, matcher.group(1), matcher.group(0)).build();
}

你忘了告诉匹配者去寻找一些东西: - )