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}$/ 待匹配字符串必须同时满足这三部分才可以
위 내용은 Java의 정규 표현식 ?:?=?!은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4
