辛星教你高速掌握PHP的正则表达式
辛星教你快速掌握PHP的正则表达式
首先说一下,这篇文章也是我在看了数个大牛的博客之后总结出来的,因此首先向这些大牛表示崇高的敬意和感谢,由于人数众多,而且来源也是特别分散,就不一一介绍了,见谅。
************跨语言的主题**************
1.就如同xml、json、cookie、session、get、post等话题一样,正则表达式是一个跨越了语言的话题,几乎绝大多数语言都支持正则表达式,可以说,只要这门语言支持字符串,它就应该支持正则表达式,因为很多功能不使用正则表达式特别麻烦 ,但是使用了正则表达式就非常简单。
2.正则表达式可以用于邮箱、QQ、手机号等的验证,而且还可以用于采集网页,当然,说白了,正则表达式可以胜任绝大多数对于字符文本的操作,当然,对于解析xml等文件,正则表达式则显得并不是很强力,不过正则表达式对于提取xml中特定的文本信息,依然非常给力。
3.因此,学好正则表达式,不论将来转学哪门语言,都是非常简单的。
*************正则表达式的作用**********
1.正则表达式的主要作用有三个,第一个是正则匹配,第二个是正则替换,第三个是正则提取。
2.所谓正则匹配,是验证一串文本是否符合某个正则表达式规则,比如我们验证用户的是否是一个邮箱,就用到了正则匹配。
3.所谓正则替换,就是我们把文本中的某些信息给替换成另外一些信息,类似于word编辑器中的查找替换功能,快速纠错。
4.所谓正则提取,即使我们从文本中根据我们的正则表达式提取出需要的信息,比如我们从一个html文件中提取出所有的标签,然后根据它的src属性来得到所有的图片的超链接,这就是从一大串文本信息中提取自己会用到的信息 。
5.我们先学习正则表达式的书写,然后在学习如何在PHP中使用正则表达式函数来操作正则表达式。
****************正则表达式的书写规则一***************
1.正则表达式通常用/来作为定界符,即两个斜线之间的部分被当做正则表达式的规则,我们用它去匹配其他的文本,比如/xinxing/这个正则表达式就表示只能比配字符串xinxing。
2.上面我们也看到了,我们的字符是可以出现在正则表达式中的,它们的作用也就是相当于匹配中的一个字符,但是,正则表达式也提供了一些元字符来让我们更加方便的来操作这些字符,这些元字符前面跟一个字符叫做前导字符,一个前导字符和一个元字符一起起作用。
3.我们用+表示其前导字符在目标中连续出现一次或多次,*表示其前导字符在目标中出现零次或者多次,而?则规定其前导对象必须在目标对象中连续出现零次或者一次,其后面的则不管了。
4.比如/xin+/可以匹配到xin,xinnnn,xinn,xinnnnn等,因为这里的+使得n可以出现一次或者多次,而xin?则可以匹配xinxing,xingui,xinguimeng等字符,只要前面有xin就可以了。
5.元字符是一种很粗糙的指定次数的方式,我们可以采用更加精细的操作,比如{m,n}表示至少出现m次,至多出现n次,{m,}表示至少出现m次,{,n}表示至多出现n次,而{t}表示出现固定的t次。
6.比如/xin{3,4}/可以匹配xinnn和xinnnn这两种情况。
**************正则表达式的书写规则二*****************
1.前面我们可以用单个的字符用来做前导字符,显然这是很弱的,我们可以有它的boss版,其中\s用于匹配单个空格符,包括制表符和换行符,\S表示用于匹配单个除了空格之外的所有字符,\d用于匹配从0到9的字符,\w用于匹配字母数字下划线,\W用于所有与\w不匹配的字符,单独的一个点号.表示撇配除了换行之外的所有字符。从上面的数据可以看出,\s和\S的意义正好相反,\w和\W也是这样。
2.比如/\s+/可以用于匹配n个空格,/\d00/可以匹配000、100、200等整百的数字。
***************正则表达式中的定位符和范围表示*********
1.正则表达式中还有所谓的定位符的说法,其中^必须出现在字符串的开头,而$则必须出现在字符串的结尾,而\b则必须出现在目标字符串的开头或者结尾,而\B则必须不能出现在开头或者结尾,只能出现在中间部分。
2.其实可以看出^和$是一对反义词,而\b和\B也是一对反义词。
3.我们可以用一个中括号括起来表示一个字符,而在里面指定范围,比如/[a-z]/表示小写字母从a到z,比如/[0-9]/表示小写字母从0到9的一个数字,比如/[a-c2-6]/表示从a到c或者从2到6的一个字母或者数字相匹配.
4.这种范围修饰符可以和元字符相连的,比如/[a-z][0-9]+/表示以一个字母作为先导,然后跟一个或者多个数字。
5.还有否定符号^用在中括号内表示的是排除,比如[^a-c]表示除去abc之外的任一字母,当^位于中括号内的时候,表示否定,当它位于中括号外的时候,被视作定位符。
6.我们通常用\表示转义符号,没错,在正则表达式中,我们也需要用\表示转义,比如\*就表示匹配*这个符号。
*****************小括号*****************
1.前面说到,元字符只能作用于其前导字符,我们可以用小括号把若干个字符括起来,作为一个整体,此时元字符就可以作用于多个字符了。
2.比如a(bc)*表示一个a后面跟着0个或者多个bc。
3.比如a(bc){0,7}表示a后面跟着0个到7个bc都可以。
4.还有一个|表示OR,即逻辑与,表示两个中选择一个。
5.比如hi|hello表示匹配hi或者hello,比如(a|b)c表示匹配ac或者bc。
**************小练习****************
1.经过我们前面的介绍,我们这里进行一下小小的演练,看看我们究竟掌握了多少。
2.其实ab*和ab{0,}表达的意思是相同的,ab?表示匹配a或者ab。
**********************备注*****************
1.上面我们讲解了正则表达式最主要的部分,还有些细枝末节没有顾忌到,下面我把比较重要的再说一下。
2.前面我们说到了用/来作为定界符,其实还可以用#作为定界符,它是在正则表达式中/出现较多的时候用的,此时正则表达式中的斜线不需要转义。
3.在正则表达式的最后加一个i表示不区分大小写。
4.我们可以分组,也有人称之为群,即Group,调用格式为(?P) 调用方式 (?P=组名)。
**************PHP函数****************
1.我们用preg_match来完成正则匹配的功能,它的第一个参数是正则表达式,第二个参数是要匹配的文本,第三个参数是可选择,表示匹配到的信息,其实它有五个参数,但是我们往往用不了那么多,如下代码示例:
<?php //定义一个正则表达式$reg ="/xi/";//定义一个字符文本$msg ="xinxisgxagxiagslgxigsghg";//这里使用了全部匹配preg_match_all($reg,$msg,$match);//输出匹配到的全部信息print_r($match);
Array ( [0] => Array ( [0] => xi [1] => xi [2] => xi [3] => xi ) )
<?php //定义一个正则表达式$reg ="/xi/";//定义一个字符文本$msg ="xinxisgxagxiagslgxigsghg";//定义替换文本$rep = "oo";//这里使用了全部匹配$str = preg_replace($reg,$rep,$msg);//输出匹配到的全部信息echo $str;
5.正则分割,是把原字符串通过相应的形式进行分割为数组,我们使用preg_split函数,代码示例:
<?php //使用逗号或空格来分隔短语$reg = "/[\s,]+/";//定义原字符串$msg = "hypertext language, programming";$keywords = preg_split($reg,$msg );print_r($keywords);
Array ( [0] => hypertext [1] => language [2] => programming )
********************总结**********************
1.正则表达式是典型的难学易忘的知识,希望可以与诸位读者共勉。
2.我们每到一定的时间就温习一次。

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7
