繁体   English   中英

Java中的正则表达式获取字符串的一部分

[英]Regex in Java get part of string

我在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不是文字空间,因为以后调试正则表达式更方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM