search
HomeWeb Front-endJS TutorialDetailed explanation of the use of regular lazy matching pattern (?)

This time I will bring you a detailed explanation of the use of the regular lazy matching mode (?). What are the precautions when using the regular lazy matching mode (?). The following is a practical case, let's take a look.

Regular expressionLazy matching mode:
In the chapter on greedy matching mode, it has been said that human nature is greedy, hoping to get more money, status and even beautiful women, but there are also Many stoic people only need to meet their basic life needs. There is also such a matching principle in regular expressions. Let’s introduce it below.

1. The concept of lazy mode:

This mode is just the opposite of greedy mode. It matches as few characters as possible to satisfy the regular expression, for example:

var str="axxyyzbdkb"; 
console.log(str.match(/a.*b/));

The above code is greedy mode, so it can match the entire string. Let’s modify it into lazy matching mode:

var str="axxyyzbdkb"; 
console.log(str.match(/a.*?b/));

The above code is lazy matching. The method is to add a question mark (?) after the repeated quantifier.
The lazy matching mode is to match as few characters as possible, but must meet the matching rules of the regular expression. For example, in the above code, * can repeatedly match 0 or more previous characters or subexpressions, but the regular expression The end of the formula must be b, so the regular expression can match axxyyzb in the above string.

The summary is as follows:

1. Add a question mark (?) after the repeated quantifier to form a lazy match.
2. Lazy matching will match as few characters as possible, but the entire matching pattern must be satisfied.

2. LazyQualifierList:

##Grammar structureSemantic explanation *?Can be repeated any number of times, but as few times as possible. +?Can be repeated once or as many times as you like, but as few times as possible, but the minimum number is 1. ??Can be repeated 0 or 1 times, but as few times as possible. {n,m}?You can repeat n to m, but repeat as little as possible. The minimum number of matches is n. {n,}? can be repeated more than n times, but it should be repeated as little as possible, and at least n should be matched.

首先引入一个介绍比较详细的网站

http://www.jb51.net/article/31491.htm

接下来是本人的简介

其实贪婪和惰性很容易理解,从字面意思我们就可以知道,所谓的"贪婪"的意思就是,如果符合要求就一直往后匹配,一直到无法匹配为止,这就是贪婪模式。所谓的惰性模式就是一旦匹配到合适的就结束,不在继续匹配下去了,下面我介绍几个例子来主要讲述一下。

首先讲述一下贪婪模式的标示符:+,?,*,{n},{n,},{n,m}.惰性模式:+?,??,*??,{n}?,{n,}?,{n,m}?;

例子一

var pattern=/8[a-zA-Z0-9]*7/;贪婪模式
var string="abc8defghij7klngon8qrstwxy7";

这时使用了贪婪模式*,表示8与8之间可有有任意多个字母,那这个正则先匹配第一个8,如果匹配到了后,就无限制的匹配后面的内容,只要后面的内容都满足[a-zA-Z0-9]就可以。一直匹配,匹配到不能再匹配为止,看紧接着后面的一个是不是7,如果不是那他就往前进一个(吐出一个看是不是7),如果不是再继续吐直到吐出7为止,然后匹配到的就是这之间的内容。所以结果匹配到的内容就是整条字符串。

var pattern=/8[a-zA-Z0-9]*?7/ig;惰性模式
var string="abc8defghij7klngon8qrstwxy7";

上面正则使用了惰性模式*?,此时匹配方式是这样的,先匹配一个8,然后在往后匹配一个字符看是不是符合[a-zA-Z0-9],如果符合,再去看紧接着后面的一个字符是不是7,如果是7就结束,如果不是就再往后匹配一个字符,看是不是符合[a-zA-Z0-9],如果符合,就再看紧接着后面的一个字符是不是7,如果是7就结束,否则,按照上面的方式依次循环下去,指导符合为止。

(2).贪婪和惰性模式还可以用另一种方式来表达。

例子二

var test="<img  src="/static/imghwm/default1.png" data-src="aaa/111.jpg" class="lazy" alt="Detailed explanation of the use of regular lazy matching pattern (?)" ><img  src="/static/imghwm/default1.png" data-src="aaa/112.jpg" class="lazy" alt="Detailed explanation of the use of regular lazy matching pattern (?)" ><img  src="/static/imghwm/default1.png" data-src="aaa/113.jpg" class="lazy" alt="Detailed explanation of the use of regular lazy matching pattern (?)" >";
var pattern=/<img  alt="Detailed explanation of the use of regular lazy matching pattern (?)" >]*\/>/ig;

这样也可以实现惰性模式,[^>]这个表示的就是在Detailed explanation of the use of regular lazy matching pattern (?)之间不能出现>,所以结果可以找寻每个Detailed explanation of the use of regular lazy matching pattern (?)标签。

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

推荐阅读:

js里的正则实现数字每隔四位用空格分隔效果

在PHP里使用正则的效率 贪婪、非贪婪与回溯详解(附代码)

The above is the detailed content of Detailed explanation of the use of regular lazy matching pattern (?). 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
From Websites to Apps: The Diverse Applications of JavaScriptFrom Websites to Apps: The Diverse Applications of JavaScriptApr 22, 2025 am 12:02 AM

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python vs. JavaScript: Use Cases and Applications ComparedPython vs. JavaScript: Use Cases and Applications ComparedApr 21, 2025 am 12:01 AM

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

The Role of C/C   in JavaScript Interpreters and CompilersThe Role of C/C in JavaScript Interpreters and CompilersApr 20, 2025 am 12:01 AM

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript in Action: Real-World Examples and ProjectsJavaScript in Action: Real-World Examples and ProjectsApr 19, 2025 am 12:13 AM

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

JavaScript and the Web: Core Functionality and Use CasesJavaScript and the Web: Core Functionality and Use CasesApr 18, 2025 am 12:19 AM

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding the JavaScript Engine: Implementation DetailsUnderstanding the JavaScript Engine: Implementation DetailsApr 17, 2025 am 12:05 AM

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

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.

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

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor