Js的$如同 sed的 java的$0 指代matcher匹配到的内容的符号

Js的$&如同 sed的& java的$0

在这里插入图片描述




$& 可用于Js,Vscode,RJTextEd,editplus,notepad++,

在 Vscode,RJTextEd,editplus,notepad++,等的替换中, 启用正则, 就能使 $&生效,
比如 ($&)表示给匹配到的内容加上括号

$& 可用于Js的String的replace(replaceAll( 的第二个字符串参数中

replace(replaceAll( 的第二个参数可以是字符串,也可以是函数

例子:给匹配到的内容加上括号
比如给字符串"abcdaabcdefgabcaabcdefg"中符合/aa/规则的内容加括号
以下代码等效

"abcdaabcdefgabcaabcdefg".replace(/aa/g , "($&)" );
"abcdaabcdefgabcaabcdefg".replaceAll(/aa/g , "($&)" );
"abcdaabcdefgabcaabcdefg".replaceAll("aa" , "($&)" );

也可以使用函数方式

replace(/aa/g , matcher=>"("+matcher+")");
replace(/aa/g , "($&)" );
replace(/aa/g , function(matcher){return "("+matcher+")";});
replaceAll(/aa/g , matcher=>"("+matcher+")");
replaceAll("aa" , matcher=>"("+matcher+")");
replaceAll(/aa/g , "($&)" );
replaceAll("aa" , "($&)" );
replaceAll(/aa/g , function(matcher){return "("+matcher+")";});
replaceAll("aa" , function(matcher){return "("+matcher+")";});




$0 可用于Java, Notepad3 等

$0 可用于Notepad3 等的正则替换

$0 可用于Java的String的 replaceAll方法 , Java的Matcher的replaceAll( , appendReplacement(

String的replaceAll方法源码

public String replaceAll(String regex, String replacement) {return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}

Matcher的replaceAll方法源码

public String replaceAll(String replacement) {reset();boolean result = find();if (result) {StringBuilder sb = new StringBuilder();do {appendReplacement(sb, replacement);result = find();} while (result);appendTail(sb);return sb.toString();}return text.toString();
}

例子:给匹配到的内容加上括号
比如给字符串"abcdaabcdefgabcaabcdefg"中符合/aa/规则的内容加括号
以下代码 m1,m2,m3,m4方法等效

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class C2 {public static  void main(String...arguments) {m1(); m2(); m3(); m4();}static String str = "abcdaabcdefgabcaabcdefg";static void m1() {System.out.println(   str.replaceAll("aa", "($0)")   );}static void m2() {Matcher matcher = Pattern.compile("aa").matcher(str);System.out.println(   matcher.replaceAll("($0)")   );}static void m3() {Matcher matcher = Pattern.compile("aa").matcher(str);StringBuilder sb = new StringBuilder();while(matcher.find()) {matcher.appendReplacement(sb, "($0)");}matcher.appendTail(sb);System.out.println(sb);}static void m4() {Matcher matcher = Pattern.compile("aa").matcher(str);StringBuilder sb = new StringBuilder();while(matcher.find()) {String 本次匹配到的内容 = matcher.group();matcher.appendReplacement(sb, "("+本次匹配到的内容+")");}matcher.appendTail(sb);System.out.println(sb);}}




& 可用于 sed 等

例子:给匹配到的内容加上括号
比如给字符串"abcdaabcdefgabcaabcdefg"中符合/aa/规则的内容加括号

echo "abcdaabcdefgabcaabcdefg" | sed 's/aa/(&)/g'
root@ud2310vm:~# echo "abcdaabcdefgabcaabcdefg" | sed 's/aa/(&)/g'
abcd(aa)bcdefgabc(aa)bcdefg
z@ud2310vm:~$ echo "abcdaabcdefgabcaabcdefg" | sed 's/aa/(&)/g'
abcd(aa)bcdefgabc(aa)bcdefg










本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327002.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RedisInsight - Redis官方可视化工具

一、RedisInsight 简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CLI 和连接的 Redis 进行交互(RedisInsight 内置对 Redis 模块支持&#…

CodeWave智能开发平台--03--目标:应用创建--04自定义主题样式5子页面页面跳转逻辑

摘要 本文是网易数帆CodeWave智能开发平台系列的第07篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用,本文主要完成04自定义主题样式5子页面页面跳转逻辑 参考:新手训练营-PC端应用 CodeWave智能开发平台的07次接…

金和OA C6 MailTemplates.aspx SQL注入漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

优化|PLSA理论与实践

PLSA又称为概率潜在语义分析,是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法。该模型最大的特点是加入了主题这一隐变量,文本生成主题,主题生成单词,从而得到单词-文本共现矩阵。本文将对包含物理学、计算机科学、…

【亲测有效】Win11 卸载MySQL5.7以及安装MySQL8.0.35

目录 一、卸载原来本地的mysql5.7 1.mysql服务部分 1.1停止mysql服务 1.2删除mysql服务 2.卸载 MySQL程序 3.残余文件的清理 3.1删除mysql安装的目录 3.2删除mysql数据存放的目录 3.3删除mysql自定义目录 4.清理注册表 5.删除环境变量配置 二、安装mysql8.0.35 1.…

启动BIOS的虚拟化设置 | 开启CPU虚拟化支持

1、开机或重启,频繁按F2进入BIOS。 2、Configuration -> Intel Virtualization Technology 改为Enabled

MiniTab的宏基础知识

什么是宏? 宏是包含一系列 Minitab 会话命令的文本文件。可以使用宏自动执行重复性任务(例如,生成月度报表)或扩展 Minitab 的功能(例如,计算特殊检验统计量)。 Minitab 提供以下类型的宏&…

python中抓取小米应用商城xpath实例

页面源码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>手机游戏应用商店_软件商店app下载-小米应用商店</title> <…

并发(4)

目录 16.sychronized修饰方法在抛出异常时&#xff0c;会释放锁吗&#xff1f; 17.多个线程等待同一个sychronized锁的时候&#xff0c;JVM如何选择下一个获取锁的线程&#xff1f; 18.sychronized是公平锁吗&#xff1f; 19.volatile关键字的作用是什么&#xff1f; 20.vo…

缘分的计算

题目描述&#xff1a; 缘分是一个外国人难以理解的中文名词。大致说来&#xff0c;缘分是一种冥冥中将两人&#xff08;通常是情人&#xff09;结合的力量。仅管这是种迷信&#xff0c;很多人——特别是女生——喜欢去计算它。 不幸的是&#xff0c;644 也是这样。有天&#x…

WEB 3D技术 three.js 顶点缩放

本文 我们来说 顶点缩放 我们官网搜索 BufferGeometry 下面有一个 scale 函数 例如 我们先将代码写成这样 上面图片和资源文件 大家需要自己去加一下 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/j…

第10课 实现多对多音视频会议功能

在前两节课&#xff0c;我们将推流端与播放端合并为一对一音视频聊天功能并解决了关键的回声问题&#xff0c;在此基础上&#xff0c;我们可以进一步改进实现多对多的视频会议功能。 1.备份demo9并修改demo9为demo10。 2.打开工程文件&#xff0c;修改mfc为四分屏画面。 界面…