Python 정규식 분석 요약 및 구성

WBOY
풀어 주다: 2022-03-29 12:09:34
앞으로
2828명이 탐색했습니다.

이 글은 python에 대한 관련 지식을 제공하며, 주로 Python 정규 표현식과 관련된 문제를 소개하고 정규 표현식 함수, 메타 문자, 특수 시퀀스, 컬렉션 세트, 일치 객체 등을 요약합니다. 모두에게 도움이 되기를 바랍니다.

Python 정규식 분석 요약 및 구성

추천 학습: python 튜토리얼

정규 표현식의 역할은 무엇인가요? 우리 웹 페이지에 캡처된 콘텐츠가 너무 많아서 전부 얻을 수는 없습니다. 일부만 필요하므로 원하는 콘텐츠와 일치하도록 정규식을 사용해야 합니다.

정규 표현식 모듈

Python에는 정규 표현식을 처리하는 데 사용할 수 있는 re라는 내장 패키지가 있습니다. re 모듈 가져오기:

import re
로그인 후 복사

Python의 정규 표현식

re 모듈을 가져온 후 정규 표현식을 사용할 수 있습니다.
예: 문자열을 검색하여 "The"로 시작하고 "Spain"으로 끝나는지 확인합니다.

import re

txt = "The rain in Spain"x = re.search("^The.*Spain$", txt)if x:
  print("匹配成功!")else:
  print("匹配失败")
로그인 후 복사

실행:
Python 정규식 분석 요약 및 구성
물론 지금은 이 예를 이해할 수 없습니다. 튜토리얼에서는 한 단계로 도달하는 방법을 가르쳐주지 않습니다.

정규식 함수

findall() 함수

findall() 함수는 모든 일치 항목이 포함된 목록을 반환합니다.
예: 모든 일치 항목 목록 인쇄

import re

txt = "川川菜鸟啊菜鸟啊"x = re.findall("菜鸟", txt)print(x)
로그인 후 복사

실행 중인 반환:
Python 정규식 분석 요약 및 구성
목록에는 일치 항목이 발견된 순서대로 포함됩니다. 일치하는 항목이 없으면 빈 목록이 반환됩니다.

import re

txt = "菜鸟并不菜"x = re.findall("川川", txt)print(x)if (x):
  print("匹配成功了哟")else:
  print("找不到这个呀!")
로그인 후 복사

실행 반환:
Python 정규식 분석 요약 및 구성

search() 함수

search() 함수는 문자열에서 일치하는 항목을 검색하고 일치하는 항목이 있으면 반환합니다. 물체. 일치하는 항목이 여러 개인 경우 일치 항목의 첫 번째 항목만 반환됩니다.
예: 문자열에서 첫 번째 공백 문자 검색:

import re

txt = "菜鸟 呢"x = re.search("\s", txt)print("第一个空格字符位于位置:", x.start())
로그인 후 복사

실행 결과:
Python 정규식 분석 요약 및 구성
일치하는 항목이 없으면 None은 값을 반환합니다.

import re

txt = "天上飞的是菜鸟"x = re.search("川川", txt)print(x)
로그인 후 복사

반환:
Python 정규식 분석 요약 및 구성

split() 함수

Split() 함수는 각 일치 항목에서 분할된 문자열이 포함된 목록을 반환합니다.
예: 공백 문자마다 분할

import re

txt = "菜鸟 学 python"x = re.split("\s", txt)print(x)
로그인 후 복사

반환 실행:
Python 정규식 분석 요약 및 구성
maxsplit 매개 변수를 지정하여 발생 횟수를 제어할 수 있습니다.
예: 첫 번째 발생에서만 문자열 분할:

import re#Split the string at the first white-space character:txt = "飞起来 菜鸟 们"x = re.split("\s", txt, 1)print(x)
로그인 후 복사

반환:
Python 정규식 분석 요약 및 구성

sub() 함수

sub() 함수는 일치하는 항목을 선택한 텍스트로 바꿉니다.
예: 바꾸기만

import re

txt = "学python就找川川菜鸟"x = re.sub("就", "只", txt)print(x)
로그인 후 복사

실행:
Python 정규식 분석 요약 및 구성
count 매개변수를 지정하여 대체 횟수를 제어할 수 있습니다.
예를 들어 처음 2개 항목 바꾸기:

import re

txt = "学python就就就川川菜鸟"x = re.sub("就", "只", txt,2)print(x)
로그인 후 복사

Return:
Python 정규식 분석 요약 및 구성

Metacharacters

문자 집합에 대한 기호

[] 나열
예: # 알파벳순으로 "a"와 "m" 사이의 모든 소문자 찾기

import re

txt = "apple chuanchuan "#按字母顺序查找“a”和“m”之间的所有小写字符x = re.findall("[a-m]", txt)print(x)
로그인 후 복사

실행:
Python 정규식 분석 요약 및 구성

Escapes

* *은 다음을 나타냅니다. 특수 시퀀스(특수 문자를 이스케이프하는 데에도 사용할 수 있음)
예를 들어 모든 숫자와 일치:

import re

txt = "我今年20岁了"#查找所有数字字符x = re.findall("\d", txt)print(x)
로그인 후 복사

실행 반환:
Python 정규식 분석 요약 및 구성

모든 기호

.은 모든 문자일 수 있습니다(개행 문자 제외).
예: "he"로 시작하고 그 뒤에 두 개의 (임의) 문자와 "o"가 오는 시퀀스를 검색하면

import re

txt = "hello world"#搜索以“he”开头、后跟两个(任意)字符和一个“o”的序列x = re.findall("he..o", txt)print(x)
로그인 후 복사

Run은 다음을 반환합니다.
Python 정규식 분석 요약 및 구성

시작 기호

^ 기호는 일치를 시작하는 데 사용됩니다. .

import re

txt = "川川菜鸟 飞起来了"x = re.findall("^川", txt)if x:
  print("哇,我匹配到了")else:
  print("哎呀,匹配不了啊")
로그인 후 복사

달려:
Python 정규식 분석 요약 및 구성

结束符

$ 符号用于匹配结尾,例如:匹配字符串是否以“world”结尾

import re

txt = "hello world"#匹配字符串是否以“world”结尾x = re.findall("world$", txt)if x:
  print("匹配成功了耶")else:
  print("匹配不到哦")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

星号符

  • 星号符用于匹配零次或者多次出现。
import re

txt = "天上飞的是菜鸟,学python找川川菜鸟!"#检查字符串是否包含“ai”后跟 0 个或多个“x”字符:x = re.findall("菜鸟*", txt)print(x)if x:
  print("匹配到了!")else:
  print("气死了,匹配不到啊")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

加号符

+ 用于匹配一次或者多次出现
例如:检查字符串是否包含“菜鸟”后跟 1 个或多个“菜鸟”字符:

import re

txt = "飞起来了,菜鸟们!"#检查字符串是否包含“菜鸟”后跟 1 个或多个“菜鸟”字符:x = re.findall("菜鸟+", txt)print(x)if x:
  print("匹配到了!")else:
  print("烦死了,匹配不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

集合符号

{} 恰好指定的出现次数
例如:检查字符串是否包含“川”两个

import re

txt = "川川菜鸟并不菜!"#检查字符串是否包含“川”两个x = re.findall("川{2}", txt)print(x)if x:
  print("匹配到了两次的川")else:
  print("匹配不到啊,帅哥")
로그인 후 복사

返回:
Python 정규식 분석 요약 및 구성

或符

| 匹配两者任一
例如:匹配字符串菜鸟或者是我了

import re

txt = "菜鸟们学会python了吗?串串也是菜鸟啊!"x = re.findall("菜鸟|是我了", txt)print(x)if x:
  print("匹配到了哦!")else:
  print("匹配失败")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

特殊序列

指定字符

\A : 如果指定的字符位于字符串的开头,则返回匹配项。
例如:匹配以菜字符开头的字符

import re

txt = "菜鸟在这里"x = re.findall("\A菜", txt)print(x)if x:
  print("是的匹配到了")else:
  print("匹配不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

指定开头结尾

\b 返回指定字符位于单词开头或结尾的匹配项 (开头的“r”确保字符串被视为原始字符串)。
例如:匹配爱开头

import re

txt = "爱你,川川"x = re.findall(r"\b爱", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성
又例如:匹配川结尾

import re

txt = "爱你,川川"x = re.findall(r"川\b", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配中间字符

\B 返回存在指定字符但不在单词开头(或结尾)的匹配项 (开头的“r”确保字符串被视为“原始字符串”)
比如我匹配菜鸟:

import re

txt = "我是菜鸟我是菜鸟啊"#检查是否存在“ain”,但不是在单词的开头:x = re.findall(r"\菜鸟", txt)print(x)if x:
  print("匹配到了嘛!!")else:
  print("匹配不到哇!")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성
但是你匹配结尾就会返回空,比如我匹配鸟:

import re

txt = "川川菜鸟"#检查是否存在“鸟”,但不是在单词的末尾:x = re.findall(r"鸟\B", txt)print(x)if x:
  print("匹配到了哦")else:
  print("找不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配数字

\d 返回字符串包含数字(0-9 之间的数字)的匹配项。
例如:

import re

txt = "我今年20岁了啊"#检查字符串是否包含任何位数(0-9的数字)x = re.findall("\d", txt)print(x)if x:
  print("哇哇哇,匹配到数字了")else:
  print("找不到哦")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配非数字

\D 返回字符串不包含数字的匹配项
例如:

import re

txt = "我今年20岁"#匹配任何非数字符号x = re.findall("\D", txt)print(x)if x:
  print("匹配到了,开心!")else:
  print("匹配不到,生气")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

空格匹配

\s 返回一个匹配字符串包含空白空间字符的匹配项。
例如:

import re

txt = "我 是 川 川 菜 鸟"#匹配任何空格字符x = re.findall("\s", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到啊")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配非空格

\S 返回字符串不包含空格字符的匹配项

import re

txt = "菜鸟是  我  了"#匹配任意非空字符x = re.findall("\S", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到啊")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配任意数字和字母

返回一个匹配,其中字符串包含任何单词字符(从 a 到 Z 的字符,从 0 到 9 的数字,以及下划线 _ 字符)
例如:

import re

txt = "菜鸟啊 是串串呀"#在每个单词字符(从a到z的字符,0-9的数字)返回匹配项,以及下划线_字符):x = re.findall("\w", txt)print(x)if x:
  print("匹配到了啊")else:
  print("匹配不到哇")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配任意非数字和字母

返回字符串不包含任何单词字符的匹配项,在每个非单词字符中返回匹配(不在A和Z之间的字符。“!”,“?”空白位等)
例如:

import re

txt = "菜鸟 是 我嘛?我不信!!"#在每个非单词字符中返回匹配(不在A和Z之间的字符。“!”,“?”空白位等):x = re.findall("\W", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到啊")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配结尾

\Z 如果指定的字符位于字符串的末尾,则返回匹配项。
例如:

import re

txt = "川川是菜鸟啊"x = re.findall("啊\Z", txt)print(x)if x:
  print("匹配到了哦!")else:
  print("匹配不到")
로그인 후 복사

集合套装

指定符范围匹配

例如集合:[arn]

import re

txt = "The rain in Spain"x = re.findall("[arn]", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到")
로그인 후 복사

匹配任意范围内小写字母

返回任何小写字符的匹配项,按字母顺序在 a 和 n 之间。
例如:

import re

txt = "hello wo r l d"x = re.findall("[a-n]", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성
同样的道理,依次其它情况如下:

[^arn] 返回除 a、r 和 n 之外的任何字符的匹配项

[0123] 返回存在任何指定数字(0、1、2 或 3)的匹配项

[0-9] 返回 0 到 9 之间任意数字的匹配项

[0-5][0-9] 返回 00 到 59 中任意两位数的匹配项

[a-zA-Z] 按字母顺序返回 a 和 z 之间的任何字符的匹配,小写或大写

[+] 在集合中,+, *, ., |, (), $,{} 没有特殊含义,所以 [+] 的意思是:返回字符串中任意 + 字符的匹配项。这个我i举个例子:

import re

txt = "5+6=11"#检查字符串是否有任何 + 字符:x = re.findall("[+]", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

匹配对象

匹配对象是包含有关搜索和结果的信息的对象。注意:如果没有匹配,None将返回值,而不是匹配对象。
直接举个例子:
执行将返回匹配对象的搜索

import re#search() 函数返回一个 Match 对象:txt = "hello world"x = re.search("wo", txt)print(x)
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

Match 对象具有用于检索有关搜索和结果的信息的属性和方法:

span()返回一个包含匹配开始和结束位置的元组。
string返回传递给函数的字符串
group()返回字符串中匹配的部分
로그인 후 복사

span函数

例如:打印第一个匹配项的位置(开始和结束位置)。正则表达式查找任何以大写“S”开头的单词:

import re#搜索单词开头的大写“S”字符,并打印其位置txt = "The rain in Spain"x = re.search(r"\bS\w+", txt)print(x.span())
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성

string函数

例如:打印传递给函数的字符串

import re#返回字符串txt = "The rain in Spain"x = re.search(r"\bS\w+", txt)print(x.string)
로그인 후 복사

group函数

例如:打印字符串中匹配的部分。正则表达式查找任何以大写“S”开头的单词

import re#搜索单词开头的大写“w”字符,并打印该单词:txt = "hello world"x = re.search(r"\bw\w+", txt)print(x.group())
로그인 후 복사

运行:
Python 정규식 분석 요약 및 구성
注意:如果没有匹配,None将返回值,而不是匹配对象。

推荐学习:python教程

위 내용은 Python 정규식 분석 요약 및 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!