Que signifie l'expression régulière de Java ?:?=?!
Java 正则?:?=?!的理解
1:解释是否获取匹配并保存匹配的值
()表示捕获分组,获取匹配,()把每个分组里的匹配的值保存起来
(?:)表示非捕获分组,获取匹配,非捕获分组匹配的值不会保存起来,可以提高程序执行速度
(?=?!?
举例说明:
// 是否获取匹配 测试文本 abxoxcd ..(xox).. 匹配 abxoxcd ..(?:xox).. 匹配 abxoxcd ..(?=xox).. 匹配 abxo 获取匹配,一般匹配到了字符之后,该字符就被消耗、输出。不获取匹配,不会消耗字符。 // 是否保存匹配的值 测试文本 AAABBCaaA E666FF (A)\\1* 匹配 AAA、A (\\w)\\1+ 匹配 AAA、BB、aa、666、FF (?:A)(B)\\1* 匹配 ABB 因为非捕获分组不保存匹配的值,所以 (?:A)(B)\\1* 匹配 ABB 第一个\\1表示(B)这个捕获组捕获到的值。 “注意:反向引用表示捕获到的值,而不是再次使用正则表达式” 这里用到了一个新的知识点,反向引用。
1、正则表达式中 “\number” 表示反向引用,表示引用一个捕获组,需要和小括号 “()” 一起使用
2、正则捕获组的下标从 0 开始,下标为 0 的组是整个表达式,下标为 1 的表示从左到右开始的第一个左括号所包含的值,后面的数字以此类推
3、捕获组在匹配成功时,会将子表达式匹配到的内容,保存到内存中一个以数字编号的组里,可以简单的认为是对一个局部变量进行了赋值,这时就可以通过反向引用的方式,引用这个局部变量的值。
4、反向引用必须要与捕获组一同使用,如果没有捕获组,而使用了反向引用的语法,不同语言的处理方式不一致,有的语言会抛异常,有的语言会当作普通的转义处理
2:解释正向预查和反向预查
// 前瞻: exp1(?=exp2) 查找exp2前面的exp1 // 后顾: (?<p> 举例说明:</p><pre class="brush:php;toolbar:false">// 正向预查和反向预查 测试文本 abxoxcd ..(?=xox) 匹配 ab ..(?=oxo) 匹配不到 (?=xox).. 匹配xo (?<h3> 加餐</h3><p> 提问:强密码(必须包含数字、小写字母和大写字母三种字符,即这三种字符的组合,且不能使用特殊字符,长度在8-16之间),你认为必须是 1个数字+1个小写字母+1个大写字母 这种顺序吗?</p><p> ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$</p><p> (?=.*[0-9])表示任意字符+一个数字</p><p> (?=.*[a-z])表示任意字符+一个小写字母</p><p> (?=.*[A-Z])表示任意字符+一个大写字母</p><p> [0-9a-zA-Z]{8,16}表示8-16个数字、大小写字母</p><p> 当有多个正向预查规则时它们是并列的,不是串行的</p><pre class="brush:php;toolbar:false">测试文本 abc2abc \\d(?=a)(?=b) 匹配不到 \\d(?=a)(?=.b) 匹配 2 当然这是为了演示它的规则,其实可以写 \\d(?=ab) 这里主要的原因是:不获取匹配(不消耗字符)。 对于 ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$ 其实整个正则表示可以分为三部分: /^(?=.*[0-9])[0-9a-zA-Z]{8,16}$/ /^(?=.*[a-z])[0-9a-zA-Z]{8,16}$/ /^(?=.*[A-Z])[0-9a-zA-Z]{8,16}$/ 待匹配字符串必须同时满足这三部分才可以
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4
