如何将正则表达式从php转换为java

时间:2014-10-19 03:31:31

标签: java php regex

php code

$contentHtml = ".....";
preg_match('/;ytplayer\.config\s*=\s*({.*?});/', $contentHtml, $matches);
var_dump($matches[1]);

如何在java / android上使用这个表达式?

Pattern pattern = Pattern.compile("/;ytplayer\.config\s*=\s*({.*?});/");
// error: Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
谢谢。

2 个答案:

答案 0 :(得分:1)

Java正则表达式,

Pattern pattern = Pattern.compile(";ytplayer\\.config\\s*=\\s*(\\{.*?});");

您不需要在Java中使用php regex分隔符。这是开始/和结束/符号。你必须再次在java中逃避\

示例:

String s = ";ytplayer.config = {foo bar};";
Pattern regex = Pattern.compile(";ytplayer\\.config\\s*=\\s*(\\{.*?});");
 Matcher matcher = regex.matcher(s);
 while(matcher.find()){
        System.out.println(matcher.group(1));
}

<强>输出:

{foo bar}

答案 1 :(得分:1)

在Java中,您不需要为正则表达式使用分隔符,并且需要双反斜杠。

Pattern pattern = Pattern.compile(";ytplayer\\.config\\s*=\\s*(\\{.*?\\});");