新建文本文档
正则表达式
普通字符
【】
应用
常用字符
(87条消息) VScode使用正则表达式快速删除注释_spicyChickenJZ-CSDN博客_vscode 删除注释
里面的
\s \S刚好一正一反,就能够匹配所有字符
//[\s\S]*?\n 单行注释
/\*(.|\r\n|\n)*?\*/ 多行注释
特殊字符
()
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
限定符
// 值得注意的是 {n,} 范围是n个到无穷
定位符
总结
怎么清除字符串里面的多个空格
s=s.replaceAll("\\s+"," "); java里面这个是正则表达式
分析\s+ \s 相当于 [\f\n\r\t\v]
$1是第一个括号里面的表达式
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是因为变了之后,下面又变回来了