java⼤⼩写匹配_Java中正则匹配如何⼤⼩写⽆关?
我们都知道,在Perl中,正则表达式要做到⼤⼩写⽆关,可以使⽤如下表⽰:
/Regex/i
时间正则表达式java那么Java中如何使正则匹配⼤⼩写⽆关呢?最常⽤的写法如下:
Pattern pattern
=Patternpile(Regex,Pattern.CASE_INSENSITIVE);
但是有些情况下,需要正则表达式字符串本⾝包含⼤⼩写⽆关的定义。⽐如replaceAll函数,要按照⼤⼩写⽆关去替换怎么办呢?可以采取/Regex/i的等价表达形式:
/(?i)Regex/
这样,就可以将“(?i)Regex”作为replaceAll的第⼀个参数去进⾏替换了。
还可以使某段内容按⼤⼩写⽆关匹配:
/first(?i)second(?-i)third/
或者采⽤以下等价的格式也可以:
/first(?i:second)third/
以下例⼦讲⽰范如何将"AaAaaA"b"A".
System.out.println(
"AaAaaA eeEeeE IiiIi OoooOo uuUuUuu"
.replaceAll("(?i)\\b([A-Z])\\1+\\b", "$1")
); // A e I O u
进⼀步地,如果我们只想把以⼤写字母开头的字符串替换成单个字符,可以改变(?i)的作⽤域,采⽤以下写法:
System.out.println(
"AaAaaA eeEeeE IiiIi OoooOo uuUuUuu"
.replaceAll("\\b([A-Z])(?i)\\1+\\b", "$1")
); // A eeEeeE I O uuUuUuu
其他知识点:
\1 代表第⼀个括号中已经匹配上的内容
\b
代表单词边界。何为单词边界,⼀个⽜x哄哄⼜⽆懈可击的定义如下:
\b匹配这样的位置:它的前⼀个字符和后⼀个字符不全是(⼀个是,⼀个不是或不存在)\w(匹配字母或数字或下划线或汉字)”
\w
代表单词,且与⼤⼩写⽆关。何为单词,上⾯已经说明,字母或数字或下划线或汉字
正则表达式博⼤精深,掌握好它⼀⾏可以⼲别⼈⼀段代码⼲的事。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论