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










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kfepiza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值