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

标签 java javascript regex

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.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/

相关文章:

java - 我的 Java 代码中不断出现 NoSuchElement 异常。我的代码有什么问题吗?

regex - 处理单个和多个单词字符串

javascript - Jquery Ajax将数据传递到另一个php文件来更新数据库只允许更新一次(Wordpress)

javascript - 多个元素拖动、调整大小、旋转和删除

python - 如何在python中从file.sql打印表名和主键

具有多个 OR/AND 运算符的正则表达式

java - 在构造函数中而不是在构造函数中加载数据

java - 如何检索当前用户 ID 并将其放入 fragment 中

java - 有什么方法可以识别 Apache POI xwpf 文档的字符样式吗?

javascript - jquery优雅降级ie5.5