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

strOutput.replace("/{{[^]*?}}/g",""); 

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

上面的陈述给了我错误:

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

我对正则表达式并不熟悉,所以我可以使用一些指导。

谢谢!

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

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

/g不映射到任何内容,但您可以使用String.replaceAllString.replaceFirst控制替换行为。

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

 strOutput.replaceAll("{{[^]*?}}", ""); 

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

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

还要记住, String类提供的“快速正则表达式”方法可能无法像您期望的那样工作。 这是因为当您指定模式(例如abc )作为matches的正则表达式时,Java看到的实际模式是^abc$ 。 所以abc会匹配,但是bc不会。

这里有更多信息。

在正则表达式的开头和结尾摆脱"/""/g" 。 然后你需要像这样转义每个"\"事件: "\\"

“g”部分意味着全球化。 这取决于您如何在Java中使用正则表达式而不是在正则表达式字符串中使用正则表达式。

你不需要在javascript中用于内联声明而不是引号的/ (s开头和结尾的正斜杠)。

应该只是Regex r = new Regex("{{[^]*?}}");