java 大小写匹配_Java中正则匹配如何大小写无关?

我们都知道,在Perl中,正则表达式要做到大小写无关,可以使用如下表示:

/Regex/i

那么Java中如何使正则匹配大小写无关呢?最常用的写法如下:

Pattern pattern

=Pattern.compile(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

代表单词,且与大小写无关。​何为单词,上面已经说明,字母或数字或下划线或汉字

正则表达式博大精深,掌握好它一行可以干别人一段代码干的事。​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值