我在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);
这段代码没有返回我想要的。
在这里,您已经解决了几个问题,现在可以正常工作了(请参见此处的示例程序):
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
文字空间,因为以后调试正则表达式更方便。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句