新建文本文档

正则表达式

普通字符

【】

image-20220212145920451

应用

image-20220212152753024

常用字符

(87条消息) VScode使用正则表达式快速删除注释_spicyChickenJZ-CSDN博客_vscode 删除注释

image-20211209110619441

里面的
\s  \S刚好一正一反,就能够匹配所有字符

//[\s\S]*?\n     单行注释

/\*(.|\r\n|\n)*?\*/    多行注释
特殊字符

image-20220212150057643

()
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
限定符

image-20211211100353065

//   值得注意的是   {n,}    范围是n个到无穷
定位符

image-20211211101203425

总结
怎么清除字符串里面的多个空格
 s=s.replaceAll("\\s+"," ");    java里面这个是正则表达式
 分析\s+   \s 相当于 [\f\n\r\t\v]
    
    $1是第一个括号里面的表达式

image-20211211102708236

image-20220212161919554

image-20211211100604938

import java.util.Scanner;

public class TreeNode {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s=scanner.nextLine();
        s = s.replaceAll("6{10,}","27");
        s = s.replaceAll("6{4,9}","9");
        System.out.println(s);
    }
}
区别
\s和\b

正则表达式中\b和\s有什么区别 - net-sky - 博客园 (cnblogs.com)

例如"abc sdsadasabcasdsadasdabcasdsa",
\sabc\s不能匹配,\babc\b可以匹配到"abc"
例题

(93条消息) L1-064 估值一亿的AI核心代码 (20分)(Java正则表达式)_信小颜的博客-CSDN博客


import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		String str;
		int n=Integer.parseInt(in.nextLine());
		for(int i=0;i<n;i++) {
			str=in.nextLine();//整行读入
			System.out.println(str);//先原样输出
			String cstr="";
			char[] chars=str.toCharArray();//字符串转数组
			for(int j=0;j<chars.length;j++)//所有大写英文字母变成小写,除了I
			{
				if(chars[j]>='A'&&chars[j]<='Z'&&chars[j]!='I') {
					chars[j]+=32;
				}	
				cstr+=chars[j];
			}
			cstr=cstr.trim();//去掉首尾多余空格
			cstr=cstr.replaceAll(" +", " ");//相邻单词间多个空格换成1个空格
			cstr=cstr.replaceAll(" (\\W)", "$1");//去掉标点符号前面的空格。标点符号默认为除了大小写英文字母和数字和下划线之外的符号。\W就是与任何非单词字符匹配	
			cstr=cstr.replaceAll("\\?", "!");//将所有?替换为!
			cstr=cstr.replaceAll("\\bcan you\\b","A");//如果can you两边是非字的(即要么是空格要么是除了大小写字母和数字和下划线)就替换成A
			cstr=cstr.replaceAll("\\bcould you\\b","B");
			cstr=cstr.replaceAll("\\b(I|me)\\b","C");//如果是独立的I或者me就替换成C
			cstr=cstr.replaceAll("A","I can");
			cstr=cstr.replaceAll("B","I could");
			cstr=cstr.replaceAll("C","you");
			System.out.println("AI: "+cstr);
		}
	}
}

//ABC是因为变了之后,下面又变回来了
posted @ 2022-11-08 09:37  雨同我  阅读(218)  评论(0编辑  收藏  举报