2015-05-01 34 views
0

我在Java中遇到了正则表达式问题。我试图捕捉到两个部件之间的字符串的中心部分:Java中的正则表达式获取字符串的一部分

function gH(a){a=a.split(""); 

return a.join("")}; 

的问题是串的中心时刻都在变化。功能的名称也一样。

下面是一个例子:

;function gH(a){a=a.split("");fH.vF(a,36);fH.DZ(a,42);fH.kG(a,1);fH.vF(a,23);fH.DZ(a,29);fH.vF(a,41);fH.DZ(a,2);fH.kG(a,2);fH.vF(a,17);return a.join("")}; 

我想要的部分是:

fH.vF(a,36);fH.DZ(a,42);fH.kG(a,1);fH.vF(a,23);fH.DZ(a,29);fH.vF(a,41);fH.DZ(a,2);fH.kG(a,2);fH.vF(a,17); 

这里是我的代码:

pattern = ";function ..\\(a\\){a=a\\.split\\(\"\"\\);(.*?);return a\\.join\\(\"\"\\)};";//;return a\\.join\\(\"\"\\)\\};"; 

r = Pattern.compile(pattern); 

m = r.matcher(response); 

String code = ""; 

while(m.find()) 
{ 
    shift = m.group(1); 
} 

System.out.println("Center:" + code); 

此代码不能返回我想要什么。

+0

什么是输出?我没有一个java编译器。 – crazyhatfish

+0

此外,您发布的代码不会做任何事情,变量**代码**在任何时候都不会更改或分配。 – crazyhatfish

回答

0

给你,固定的几个问题,现在它正在努力(见sample program here):

String response = ";function gH(a){a=a.split(\"\");fH.vF(a,36);fH.DZ(a,42);fH.kG(a,1);fH.vF(a,23);fH.DZ(a,29);fH.vF(a,41);fH.DZ(a,2);fH.kG(a,2);fH.vF(a,17);return a.join(\"\")};"; 
String pattern = "function\\s+..\\(a\\)\\{a=a\\.split\\(\"\"\\);(.*?)return\\s+a\\.join\\(\"\"\\)};"; 
Pattern r = Pattern.compile(pattern); 
Matcher m = r.matcher(response); 
String code = ""; 
while(m.find()) 
{ 
    code = m.group(1); 
} 
System.out.println("Center:" + code); 

输出:

Center:fH.vF(a,36);fH.DZ(a,42);fH.kG(a,1);fH.vF(a,23);fH.DZ(a,29);fH.vF(a,41);fH.DZ(a,2);fH.kG(a,2);fH.vF(a,17); 

code现在正确地将指派第一的价值捕获组,并在以后使用。我更喜欢\s超过文字空间,因为稍后调试正则表达式更方便。

相关问题