宝哥软件园

正则表达式中\B和\b的透彻分析

编辑:宝哥软件园 来源:互联网 时间:2021-08-31

正则表达式的B和b中有一些地方无法理解

或许看完下面的博客你能对B和b有更好的了解

根据查看API,B和b是边界匹配器

先说说单词b的边界吧!要理解,首先要知道什么是词的界限!我们可以以b为单位进行探索

单词边界

导入Java . util . regex . Matcher;导入Java . util . regex . pattern;公共类匹配器1 {公共静态void main(string[]args){ string str='(中文问号?123?英语)问号?我华丽[tab],我华丽{空格字符,我华丽}换行符 n ';String rex=' bpattern=pattern.compile(rex);matcher matcher=pattern . matcher(str);String []结果=pattern . split(str);For(字符串字符串:结果){system。out . println(' split string : ' '[' string ']');}}}运行结果

拆分字符串3360 [(]拆分字符串:[中文问号]拆分字符串:[?]分割字符串3360 [123]分割字符串:[?]分割字符串:[英语]分割字符串:[)]分割字符串:[问号]分割字符串:[?] :[我很华丽]:[[]:[tab] :[ ]]:[我很华丽] :[{] :[空格字符]:[]

从这些分段的字符串中,我们可以知道单词边界是单词和符号之间的边界

这里的字可以是汉字、英文字符、数字;符号可以是中文符号、英文符号、空格、制表符和换行符

让我们看看下面的例子

导入Java . util . regex . Matcher;导入Java . util . regex . pattern;公共类匹配器1 {公共静态void main(String[]args){ String str=' 2 ';String rex=' b2 bpattern=pattern.compile(rex);matcher matcher=pattern . matcher(str);If (matcher。matches ()) {system。out.println('匹配成功');}else{ System.out.println('不成功的匹配');}}}在看上面的分割例子之前,估计包括我在内的很多人都会认为这个操作的结果是匹配成功

经过分割的例子,我们知道空间不是边界。空格和数字2之间的那个称为边界,所以运行结果不言而喻,匹配肯定不成功

当你运行它的时候,如果你这样写,它就是一个成功的匹配

导入Java . util . regex . Matcher;导入Java . util . regex . pattern;公共类匹配器1 {公共静态void main(String[]args){ String str=' 2 ';String rex=' b2 bpattern=pattern.compile(rex);matcher matcher=pattern . matcher(str);If (matcher。matches ()) {system。out.println('匹配成功');}else{ System.out.println('不成功的匹配');{ 0 }的用法}}b

一般来说,b不是用来判断当前字符串是否符合某个规则的

通常,我们使用b进行采集

导入Java . util . regex . Matcher;导入Java . util . regex . pattern;public class matcher 1 { public static void main(string[]args){ string str=',呵呵,';String rex='\b呵呵 b ';pattern=pattern.compile(rex);matcher matcher=pattern . matcher(str);if(matcher . find()){ system . out . println(matcher . group());}}}运行结果

呵呵1

的用法

了解了b的用法之后,我们再来说说B B是一个非词边界

也就是说, b=[ b]//这个符号表示对与错1

b是单词和符号的界限,其他不是单词和符号界限的都是B

所以我们的猜测B是符号和文字的界限。

当然,我猜我们需要认证!让我们写一个例子来证明一个!

导入Java . util . regex . Matcher;导入Java . util . regex . pattern;公共类matcher 1 { public static void main(string[]args){ string str=' 123456我是JAVA{,'“ASD”;字符串rex=' Bpattern=pattern.compile(rex);matcher matcher=pattern . matcher(str);String []结果=pattern . split(str);For(字符串字符串:结果){system。out.println ('split string : '字符串);}}}运行结果

分段串:1分段串:2分段串:3分段串:4分段串:5分段串33606分段串: I分段串:是分段串:J分段串3360A分段串3360V分段串3360A {//单词和符号的边界不算B的边界。分串:分串:分串:分段串3360’分段串:s分段串:d

事实证明B作为非文字边界,确实是文字与符号的边界

B通常也用于获取字符串

导入Java . util . regex . Matcher;导入Java . util . regex . pattern;public class matcher 1 { public static void main(string[]args){ string str=',和hehe,';字符串rex=' B Bpattern=pattern.compile(rex);matcher matcher=pattern . matcher(str);if(matcher . find()){ system . out . println(matcher . group());}}}因为字符之间有边界

所以手术的结果是

补充:

正则表达式中b和s的区别是什么

字符串:abcsdsadas abcasdsadasdabcadssa

sabcs和babcb都可以在中间匹配abc。这个方法不是重复的吗?/s匹配空格和回车符等。/b在线教程分不清楚角色边界是什么意思。

不一样。

babcb匹配“abc” Sabc s不匹配“ABC”,但在b前后有一个空格“ABC”,仅匹配字符串开头和结尾的位置以及空格回车符,但不匹配空格字符本身

例如' abc sdsadasabcasdsadasdabcasdsa ',

sabcs不能匹配,babcb可以匹配“abc”

b代表字与字之间看不见的东西,如

这里有一个词

然后,这个句子里有几个b,每个单词前后都有一个b。

因此,您可以在这里使用b ere b来匹配上面的内容,但是如果这里不是一个单词,而是一个单词的一部分,例如adheread,那么这里可以匹配,但是 b ere b不能匹配,因为ad之后没有 b,所以这里在attend不会匹配。

总结:b在匹配整个单词时使用。如果不是全词就不匹配。如果你想配我,你知道,很多词里都有我,但我就是想配我,也就是“我”,所以我这个时候用bIb

B,另一方面,代表非字。类似于数字的D,非数字的D。

摘要

以上是边肖介绍的正则表达式中的B和b。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+