regex - JavaScript 中使用的正则表达式在 Java 中不起作用
问题描述
replace(/[.?+^$[\]\\(){}|-]/g, '\\$&');
但它在 Java 中不起作用。所以我将代码更改如下。
replace(/[.?+^$[\\]\\\\(){}|-]/g, '\\\\$&');
当我改变它时它不起作用。请帮我 :(
解决方案
在 Java 中,replace在构造函数中不使用正则表达式,因为您需要replaceFirst。
但是当您/g
在 Javascript 中使用该标志进行所有替换时,您可以使用replaceAll。
在 Javascript 中,$&
替换中的这部分指向完全匹配。
所以你想替换[.?+^$[\]\\(){}|-]
前面的完整匹配(这是这些字符之一)\
在 Java 中,您可以改为使用$0
来指代完整匹配。
您还可以转义字符类中的左方括号\\[
例如
System.out.println("{test?test^}".replaceAll("[.?+^$\\[\\]\\\\()\\{}|-]", "\\\\$0"));
查看Java 演示
输出
\{test\?test\^\}
Javascript 中的相同输出
console.log("{test?test^}".replace(/[.?+^$[\]\\(){}|-]/g, '\\$&'));
推荐阅读
- javascript - 为什么 ngClass 不是标准的属性绑定
- javascript - 在onmouseup上突出显示div内的span标签
- algorithm - 如果存在某些东西,查找的最佳数据结构是什么?
- php - php:如何在 mysqli 中获取多个表
- git - 提供从机器访问 Github 私有仓库的权限
- javascript - Jquery中的本地存储和表单
- python - Django:如何在一个模板中使用超过 2 个基于类的通用视图
- python - 如何使用另一个类连接和断开 matplotlib 的事件处理程序?
- java - 为什么在一次完整 gc 后提升和幸存者内存大小会增加
- python - 如何从主机浏览器访问 Virtualbox Python Flask 服务?