对于正则表达式的中\B和\b 有些地方会出现弄不懂的情况
或许你看了下面这篇博客 你就能够对\B和\b认识加深了
根据查看API可以知道 \B和\b都是边界匹配符
先说说\b这个单词边界吧!竟然想了解 首先必须清楚什么叫单词边界!我们可以以\b为分割来探究一下
单词边界
import java.util.regex.Matcher; import java.util.regex.Pattern; public class matcher1 { public static void main(String[] args) { String str="(中文问号?123"; String rex="\\b"; Pattern pattern=Pattern.compile(rex); Matcher matcher=pattern.matcher(str); String [] result=pattern.split(str); for(String string:result){ System.out.println("分割的字符串:"+"["+string+"]"); } } }
运行结果
分割的字符串:[(]
分割的字符串:[中文问号]
分割的字符串:[?]
分割的字符串:[123]
分割的字符串:["htmlcode">import java.util.regex.Matcher; import java.util.regex.Pattern; public class matcher1 { public static void main(String[] args) { String str=" 2 "; String rex="\\b2\\b"; Pattern pattern=Pattern.compile(rex); Matcher matcher=pattern.matcher(str); if(matcher.matches()){ System.out.println("匹配成功"); }else{ System.out.println("匹配不成功"); } } }在没有看上面分割的例子前估计很多人包括我都会认为这运行的结果是匹配成功
经过分割的例子后就知道了 空格并不是边界 空格与数字2之间的那个才叫边界 所以运行结果不言而喻 肯定是匹配不成功
当如果你这样写就运行出来就是匹配成功
import java.util.regex.Matcher; import java.util.regex.Pattern; public class matcher1 { public static void main(String[] args) { String str="2"; String rex="\\b2\\b"; Pattern pattern=Pattern.compile(rex); Matcher matcher=pattern.matcher(str); if(matcher.matches()){ System.out.println("匹配成功"); }else{ System.out.println("匹配不成功"); } } }\b的用法
一般来说\b不用来判断当前字符串是否符合某种规则
一般我们都用\b来进行获取
import java.util.regex.Matcher; import java.util.regex.Pattern; public class matcher1 { public static void main(String[] args) { String str=",,,,呵呵,,,,"; String rex="\\b呵呵\\b"; Pattern pattern=Pattern.compile(rex); Matcher matcher=pattern.matcher(str); if(matcher.find()){ System.out.println(matcher.group()); } } }运行结果
呵呵1
\B的用法
了解了\b的用法 我们再来说说\B \B是非单词边界
也就说\B=[^\b]//符号^是非的意思1
\b是单词与符号的边界 那非单词与符号的边界的其它都是\B
所以我们的猜想\B是符号与符号,单词与单词的边界
当然猜想需要认证!下面我们写一个例子来证明一个!
import java.util.regex.Matcher; import java.util.regex.Pattern; public class matcher1 { public static void main(String[] args) { String str="123456我是JAVA{,、;‘asd"; String rex="\\B"; Pattern pattern=Pattern.compile(rex); Matcher matcher=pattern.matcher(str); String [] result=pattern.split(str); for(String string:result){ System.out.println("分割的字符串:"+string); } } }运行结果
分割的字符串:1
分割的字符串:2
分割的字符串:3
分割的字符串:4
分割的字符串:5
分割的字符串:6
分割的字符串:我
分割的字符串:是
分割的字符串:J
分割的字符串:A
分割的字符串:V
分割的字符串:A{ //单词与符号之间的边界不算\B的边界
分割的字符串:,
分割的字符串:、
分割的字符串:;
分割的字符串:‘a
分割的字符串:s
分割的字符串:d事实证明\B作为非单词边界 确实是单词与单词,符号与符号之间的边界
\B一般也是用来获取字符串的
import java.util.regex.Matcher; import java.util.regex.Pattern; public class matcher1 { public static void main(String[] args) { String str=",,,,,和呵呵,,,,,"; String rex="\\B呵\\B"; Pattern pattern=Pattern.compile(rex); Matcher matcher=pattern.matcher(str); if(matcher.find()){ System.out.println(matcher.group()); } } }因为字符与字符之间的边界
所以运行的结果是
呵
补充:
正则表达式中\b和\s有什么区别
字符串:abcsdsadas abc asdsadasdabcasdsa
使用\sabc\s和\babc\b都能匹配中间的abc,这种方法不是重复了么,/s是匹配空格回车等得,/b网上教程说得不清楚什么字符边界什么意思。
不一样
\babc\b匹配的是"abc"
\sabc\s匹配的不是"abc", 前后还带空格" abc "
\b只是匹配字符串开头结尾及空格回车等的位置, 不会匹配空格符本身例如"abc sdsadasabcasdsadasdabcasdsa",
\sabc\s不能匹配,\babc\b可以匹配到"abc"
\b代表字与字中间那个看不见的东西,如
here is a word
那么,这句中有好几个\b, 每个单词的前后都有一个\b.
所以你用 \bhere\b 可以匹配上面这个here,但如果here 不是一个单词,而是一个单词的一部分,如 adheread, 这样的话,用here 可以匹配,用\bhere\b就不能区配了,因为ad后面没有\b. 所以 adhere 中的here 不会被匹配。
总结: \b 就是用在你匹配整个单词的时候。 如果不是整个单词就不匹配。 你想匹配 I 的话,你知道,很多单词里都有I的,但我只想匹配I,就是“我”,这个时候用 \bI\b
\B就是反过来,代表非字间。 类似\d代表数字, \D代表非数字。
总结
以上所述是小编给大家介绍的正则表达式中的\B和\b ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 黑鸭子2010-再度重相逢[首版][WAV+CUE]
- 【原神手游】5.2版本圣遗物优化详情
- 方季惟.1989-一生只爱一次【蓝与白】【WAV+CUE】
- 群星.1997-强力舞曲总动员【金点】【WAV+CUE】
- 盘尼西林.2024-岛与黎明【智慧大狗】【FLAC分轨】
- 刀郎《柔情经典》 2CD[WAV分轨][3.8G]
- 群星2024《民谣精选》原音母版1:1直刻[低速原抓WAV+CUE][1.1G]
- 经典《泰坦尼克号原声大碟》[WAV+DSF+FLAC多版][5.2G]
- 魔兽世界兽王猎输出宏代码是什么 兽王猎翻页输出宏命令代码分享
- 魔兽世界wlk野德一键输出宏是什么 wlk野德一键输出宏介绍
- wlk鸟德一键输出宏是什么 wlk鸟德一键输出宏介绍
- 《明末:渊虚之羽》外网新宣传:有勇气面对障碍吗?
- 视觉盛宴!V社公布《看火人》团队新作水面物理效果演示
- 张艺谋呼吁观众走进影院看电影:对解说短视频很无语
- 车载音乐最强享受 《车载极致女声精选》[WAV分轨][1G]