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_INSENSITIVE
和 Pattern.MULTILINE
(您可以在从 Pattern
类创建正则表达式时使用这些开关,或者您可以使用它们是内联的——我稍后会展示这个)。
/g
不映射到任何内容,但您可以使用 String.replaceAll
控制替换行为与 String.replaceFirst
.
要使您的代码正常工作,您必须执行以下操作:
strOutput.replaceAll("{{[^]*?}}", "");
如果您想使用开关,您需要在正则表达式的开头添加类似 (?i)
的内容。
您不能使用 String.replace
因为它采用 CharSequence
作为第一个参数而不是正则表达式。
另请记住,String
类提供的“快速正则表达式”方法可能无法像您期望的那样工作。这是因为当您指定一个模式(比如 abc
)作为 matches
的正则表达式时,Java 看到的实际模式是 ^abc$
。所以 abc
会匹配,但 abcd
不会。
还有更多信息here .
关于java - 如何将 javascript 正则表达式转换为安全的 java 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788413/