2012-02-14 116 views
0

最後收托架從下面串缺少正則表達式

lookup('CONTACT','CON_LKP','LKP_TAB1.COUNTRY_CD')||lookup('CONTACT','CON_LKP','LKP_TAB2.OBJECTIVE')||$country_cd$ 

提取我使用

Pattern p = Pattern.compile("(lookup\\([^)]*)\\)"); 

查找函數但此功能reurning匹配排除最後右括號「) 」。就像它的返回

lookup('CONTACT','CON_LKP','LKP_TAB1.COUNTRY_CD' 

我在哪裏犯錯。順便說一句,我在正則表達中知之甚少。所以我的問題可能很愚蠢。

回答

1

只要改變行

Pattern p = Pattern.compile("(lookup\\([^)]*\\))"); 

您需要包括匹配組到底架\\)了。

代碼:

[email protected] /tmp $ cat RegExpTest.java 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegExpTest { 
    public static void main(String[] args) { 

     String str = "lookup('CONTACT','CON_LKP','LKP_TAB1.COUNTRY_CD')||lookup('CONTACT','CON_LKP','LKP_TAB2.OBJECTIVE')||$country_cd$"; 

     String p = "(lookup\\([^)]*\\))"; 
     Pattern pattern = Pattern.compile(p); 
     Matcher matcher = pattern.matcher(str); 
     if (matcher.find()){ 
      System.out.println(matcher.group(1)); 
     } 
    } 
} 
[email protected] /tmp $ javac RegExpTest.java 
[email protected] /tmp $ java RegExpTest 
lookup('CONTACT','CON_LKP','LKP_TAB1.COUNTRY_CD') 
[email protected] /tmp $ 
+0

由於其工作正常 – 2012-02-14 05:43:32

相關問題