如何将javascript正则表达式转换为安全的java正则表达式?

roc*_*kit 9 javascript java regex

strOutput.replace("/{{[^]*?}}/g","");
Run Code Online (Sandbox Code Playgroud)

有没有办法将JavaScript正则表达式转换为Java安全正则表达式?

上面的陈述给了我错误:

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

我不是那么熟悉正则表达式,所以我可以使用一些指导.

谢谢!

Viv*_*ath 13

摆脱正斜杠.你不需要Java中的那些.此外,Java的正则表达式无法识别像/g和的开关/i; 那些是由常数控制的java.util.regex.Pattern.

在Java世界中唯一有意义的Javascript正则表达式开关是/i/m.这些映射到Pattern.CASE_INSENSITIVEPattern.MULTILINE(您可以在从Pattern类创建正则表达式时使用这些开关,或者您可以在内联使用它们 - 稍后我将对此进行说明).

/g不映射到任何东西,但你可以控制使用替代行为String.replaceAllString.replaceFirst.

要使代码工作,您必须执行以下操作:

strOutput.replaceAll("{{[^]*?}}", "");
Run Code Online (Sandbox Code Playgroud)

如果你想使用开关,你需要添加类似于(?i)正则表达式开头的东西.

你不能使用,String.replace因为它接受CharSequence第一个参数而不是正则表达式.

另请注意,课程提供的"快速正则表达式"方法String可能无法像您期望的那样工作.这是因为当你指定一个模式(例如abc)作为正则表达式时,matchesJava看到的实际模式是^abc$.所以abc会匹配,但bc不会.

有更多的信息在这里.