search
HomeWeb Front-endJS TutorialDetailed explanation of the use of \B and \b in regular expressions

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

对于正则表达式的中\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???英文)问号?我是华丽[的制表符\t]我是华丽{的空格符 我是华丽}的换行符\n";
 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("匹配不成功");
 }
 }
}

\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());
 }
 }
}

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

所以运行的结果是

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

推荐阅读:

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

vue做出验证码按钮倒计时

The above is the detailed content of Detailed explanation of the use of \B and \b in regular expressions. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python vs. JavaScript: The Learning Curve and Ease of UsePython vs. JavaScript: The Learning Curve and Ease of UseApr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python vs. JavaScript: Community, Libraries, and ResourcesPython vs. JavaScript: Community, Libraries, and ResourcesApr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

From C/C   to JavaScript: How It All WorksFrom C/C to JavaScript: How It All WorksApr 14, 2025 am 12:05 AM

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

JavaScript Engines: Comparing ImplementationsJavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AM

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

Beyond the Browser: JavaScript in the Real WorldBeyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AM

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Apr 11, 2025 am 08:23 AM

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)How to Build a Multi-Tenant SaaS Application with Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript: Exploring the Versatility of a Web LanguageJavaScript: Exploring the Versatility of a Web LanguageApr 11, 2025 am 12:01 AM

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.