正则表达式的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。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!