首页 > web前端 > js教程 > 正文

正则里B和使用详解

php中世界最好的语言
发布: 2018-06-09 14:25:05
原创
2120人浏览过

这次给大家带来正则里B和使用详解,正则里B和使用的注意事项有哪些,下面就是实战案例,一起来看一下。

对于正则表达式的中B和 有些地方会出现弄不懂的情况

或许你看了下面这篇博客 你就能够对B和认识加深了

根据查看API可以知道 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]
分割的字符串:[???]
分割的字符串:[英文]
分割的字符串:[)]
分割的字符串:[问号]
分割的字符串:[?]
分割的字符串:[我是华丽]
分割的字符串:[[]
分割的字符串:[的制表符]
分割的字符串:[    ]]
分割的字符串:[我是华丽]
分割的字符串:[{]
分割的字符串:[的空格符]
分割的字符串:[ ]
分割的字符串:[我是华丽]
分割的字符串:[}]
分割的字符串:[的换行符]
分割的字符串:[
]

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

这里的单词可以是中文字符,英文字符,数字;符号可以是中文符号,英文符号,空格,制表符,换行

下面我们看一个例子

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("匹配不成功");
 }
 }
}
登录后复制

的用法

一般来说不用来判断当前字符串是否符合某种规则

一般我们都用来进行获取

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=[^]//符号^是非的意思1

是单词与符号的边界 那非单词与符号的边界的其它都是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());
 }
 }
}
登录后复制

因为字符与字符之间的边界

所以运行的结果是

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

封装Vue2路由导航钩子并在实战中使用

vue做出验证码按钮倒计时

以上就是正则里B和使用详解的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号