
已解决问题
谷歌QU22371507用户在2021.08.20提交了关于“百万亚瑟王j**a中怎么替换string中的某个字符”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-01-24T14:03:09。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !
详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !
/?392931String这个对
一、正则
正则表达式正则表达是J**a中比较矛盾
二、正则表
1、预
限定符
说明
\
nn字符的8进制表示.n在0至7之间取值
mnn
\xhh字符的16进制表示.
\uhhhh字符的16进制表示0xhhhh.对应unicode编码字符
\t缩
换行符(unicode:‘\u
回车符(unico
\f制表符(unico
\a警报(铃声)字符(unicode:‘\u0007′)
\e转义符(unicode:‘\u001B’)
\cx控制符x
\d匹配任意数字[0-9]
\D匹配任意非数字[^0-9]
\s匹配任意空白符(空格,缩进,换行,回车)
\S匹配任意非空白符
\w匹配任意单词
\W匹配任意非单词
2、设置指定限定条件[](即“[]”表示的是中括符里的内容是条件)
限定符
说明
[a-z]匹配小写atoz范围中任一个字符,又如[abc]匹配a,或b或c
[A-Z]匹配大写AtoZ范围中任一个字符
[a-zA-Z]匹配小写atoz或大写AtoZ范围中一个字符
[0-9]匹配小写0to9范围中一个字符
[0-9a-z]匹配小写0to9或atoz范围中一个字符
[0-9[a-z]]匹配小写0to9或atoz范围中一个字符(交集)
[^abc]匹配不是a,b,c的字符,是否定匹配
[a-zA-Z]匹配a到z,A到Z直接的字符,是范围匹配
[a-d[m-p]]匹配a到d之间字符或m到p之间字符,是并集匹配
[a-z&&[def]]匹配d,e,或f.是交集匹配(这里是在范围a-z和字符def之间取交集).
[a-z&&[^bc]]匹配a-z之间所有字符,排除bc的字符。是减法匹配
[a-z&&[^m-p]]匹配a-z之间所有字符,排除m-p之间的字符是减法匹配
3、边界匹配
边界符
说明
^匹配行首
$匹配行尾
\b匹配单词边界
\B匹配非单词边界
\A匹配文本开头
\G匹配前一匹配项结尾
\Z输入的结尾,仅用于最后的结束符(如果有的话)
\z匹配文本结尾
4、逻辑操作符和量词表示
正则表达式支持少量的逻辑运算(与,或)。与操作是默认的,表达式cmo,意味着c与m与o。
贪婪模式
饥饿模式
独占模式
说明
X?X??X?+匹配0或1次,即出现X0或者1次
X*X**?X*+匹配0或多次
X+X+?X++匹配1或多次
X{n}X{n}?X{n}+匹配n次
X{n,}X{n,}?X{n,}+匹配最少n次
X{n,m}X{n,m}?X{n,m}+匹配最少n次,最多m次
三、正则表达式的应用
编译正则表达式的字符串值构造对应的模式Pattern对象
创建匹配给定输入与此模式的匹配器Matcher
通过匹配器对象执行操作,匹配器对象的方法很丰富,互相组合使用更加强大(JDK**API)
1、去掉字符串中的空格和换行符
publicstaticStringgetNonBlankStr(Stringstr){
if(str!=**ll&&!"".equals(str)){
Patternpattern=Pattern.compile("\\s*|\t|
Matchermatcher=pattern.matcher(str);
Stringresult=matcher.replaceAll("");
returnresult;
}else{
returnstr;
}
}12345678910
2、去掉指定特殊字符
publicstaticStringStringFilter(Stringstr)throwsPatternSyntaxException{//StringregEx="[^a-zA-Z0-9]";//只允许字母和数字
//**掉所有特殊字符(除了~之外)
StringregEx="[`!@#$%^&*()+=|{}':;',//[//]./?!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Patternpattern=Pattern.compile(regEx);
Matchermatcher=pattern.matcher(str);returnmatcher.replaceAll("").trim();
}123456789
3、Pattern.matches()检查字符串中是否存在指定字符
Stringtext="therearemanyhotels"+"byamap.theadrr:
booleanmatches=Pattern.matches(pattern,text);//true则存在123
4、Pattern.split()用正则表达式作为分隔符,把文本分割为String类型的数组
/**
*结果:element=grjkText
element=wwwdsf
element=Many
element=egsdgrgeg
*/Stringtext="AreggrjkTextregwwwdsfregManyregegsdgrgeg";
StringpatternString="reg";
Patternpattern=Pattern.compile(patternString);
String[]split=pattern.split(text);for(Stringelement:split){
System.out.println("element="+element);
}1234567891011121314
5、Matcher实例的find()+start()+end()寻找字符串中指定字符串出现的次数和起始和结束的索引位置
/**
*结果:found:1:2-4
found:2:5-7
found:3:23-25
found:4:70-72
*/Stringtext="Thisisthetextwhichistobesearched"+"foroccurrencesoftheword'is'.";
StringpatternString="is";
Patternpattern=Pattern.compile(patternString);
Matchermatcher=pattern.matcher(text);intcount=0;while(matcher.find()){
count++;
System.out.println("found:"+count+":"+matcher.start()+"-"+matcher.end());
}12345678910111213141516
6、Matcher匹配指定格式的特殊字符串
Patternpattern=Pattern.compile("[0-9]*");//判断是否都是数字
MatcherisNum=pattern.matcher("1123是数字");
if(isNum.matches()){
System.out.println("全部是数字");
}else{
System.out.println("有汉字");
}