Python 정규식에 대한 참고 사항

coldplay.xixi
풀어 주다: 2021-02-01 17:58:34
앞으로
1819명이 탐색했습니다.

Python 정규식에 대한 참고 사항

기사 디렉토리

  • 0, 서문
  • 1, 정규식 패턴
  • 2, 정규식 수정자 - 선택적 플래그
    • 2.1, `re.IGNORECASE`(`re.I`)
    • 2.2, `re.ASCII`(`re.A`)
    • 2.3, `re.DOTALL`(`re.S`)
    • 2.4, `re.MULTILINE`(`re.M` )
    • 2.5 ,`re.verbose` (re. 3.1.1
    • example 3.1.2 xexample 3.1.3
  • 3.2. 여러 매치를 찾는 기능
    • example 3.2.1
      • 3.3. 분할.
      • 예제 3.3.1
    • import re
      로그인 후 복사
      • 0. 서문
    • 이 노트는 초보자 튜토리얼과 Zhihu 튜토리얼을 기반으로 하며 내 자신의 학습 경험을 일부 포함합니다.
    • 1. 정규식 패턴
    강조된 부분은 제가 추가한 부분인데 실제 상황에 맞게 매칭이 가능하거든요

여기서는 좀 게을러서 직접 캡쳐한 사진입니다 초보자 튜토리얼 중.

2. 정규식 수정자 - 선택적 플래그

2.1. re.IGNORECASE(re.I)

Python 정규식에 대한 참고 사항섹션 1은 상수이지만 re.findall 함수는 이 섹션 전체에서 사용되는 함수이므로 먼저 간단히 언급해야 합니다.

re.findall(pattern, string, flag=0): 문자열의 아무 곳이나 검색하고 목록을 반환합니다. pattern은 일치시킬 문자(문자열), string은 검색 소스, flag는 수정자, 기본값은 0


re .I의 기능은 문자의 대소문자를 무시하는 것입니다. Python 정규식에 대한 참고 사항

text = "I'm Jasmine-Feng. My student number is No. 321432"pattern = r"Jasmine-FENG"print('Default: ', re.findall(pattern,text))print('Ignore upper/lower case: ', re.findall(pattern,text,flags=re.I))
로그인 후 복사
N.B. 패턴에는

r 문자열

이 할당됩니다. 이 r 문자열의 기능은 이스케이프를 방지하는 것입니다. r은 그대로 유지한다는 뜻입니다. 이 블로그 게시물을 참조하세요. 일반적으로 이 r 문자열은 정규식을 사용할 때 사용됩니다.

Default:  []Ignore upper/lower case:  ['Jasmine-Feng']Process finished with exit code 0
로그인 후 복사
기본적으로 대소문자를 구분하여 ENG를 찾을 수 없으며, 구분하지 않으면 eng을 찾을 수 있습니다.

2.2, re.ASCII(re.A)re.IGNORECASE(re.I)

虽然第1节是常量,但我们必须先简要提一下re.findall这个函数,因为它是贯穿这一节的函数。
re.findall(pattern, string, flag=0): 从字符串任意位置查找,返回一个列表。pattern是欲匹配的字符(串),string是查找源,flag是修饰符,默认是0

re.I的作用是忽略字符大小写

text = "我是Jasmine-Feng. 我的学号是No. 321432"pattern = r"\w+"print('Default: ', re.findall(pattern,text))print('ASCII: ', re.findall(pattern,text,flags=re.A))
로그인 후 복사

N.B. pattern被赋了一个r字符串,这个r字符串的作用是避免转义,r是raw的缩写,也就是保持原样的意思。可看这篇博文。一般来说,使用正则表达式都会用到这个r字符串。

Default:  ['我是Jasmine', 'Feng', '我的学号是No', '321432']ASCII:  ['Jasmine', 'Feng', 'No', '321432']Process finished with exit code 0
로그인 후 복사

在默认情况下,区分大小写,找不到ENG;若不区分,则可以找到eng。

2.2、re.ASCII(re.A)

re.A的作用是只匹配ASCII码支持的字符,那么具体指哪些字符呢?下图来自百度百科。
Python 정규식에 대한 참고 사항
汉字是不在这个里面的,所以如果修饰符是re.A的话就匹配不了汉字了哈~

text = "我\t是Jasmine-F\neng. 我%的◉学号是No. 321432"pattern = r'.*'print('Default: ', re.findall(pattern,text))print('DOTALL: ', re.findall(pattern,text,re.S))
로그인 후 복사

w+的作用是匹配一个或多个字母数字下划线汉字

Default:  ['我\t是Jasmine-F', '', 'eng. 我%的◉学号是No. 321432', '']DOTALL:  ['我\t是Jasmine-F\neng. 我%的◉学号是No. 321432', '']Process finished with exit code 0
로그인 후 복사

2.3、re.DOTALLre.S

在正则表达式模式中,.是用来Python 정규식에 대한 참고 사항

text = "我\t是Jasmine-F\neng. 我%的◉\n学号是No. 321432"pattern = r'.$'pattern2 = r'^.'print('Default, end: ', re.findall(pattern, text))print('MULTILINE, end: ', re.findall(pattern, text, re.M))print('Default, start: ', re.findall(pattern2, text))print('MULTILINE, start: ', re.findall(pattern2, text, re.M))
로그인 후 복사

.*的作用是匹配长度至少为0的字符(串),emmm,好像是句废话?事实上,只要整段话不被换行符截断,就可以得到整个字符串(外加一个空字符串)。

Default, end:  ['2']MULTILINE, end:  ['F', '◉', '2']Default, start:  ['我']MULTILINE, start:  ['我', 'e', '学']Process finished with exit code 0
로그인 후 복사

2.4、re.MULTILINE(re.M)

$匹配定位到字符串末尾,^定位到字符串开头,默认情况下,如果换行,是不能定位到新一行的行头/尾的,而用re.M修饰则可以,也就是多行模式。

text = '朋友们好啊!我是xxxxxx拳掌门人xxx~'pattern = r'''朋友们  # 主语
              好啊!  # 谓语
           '''print(re.findall(pattern, text,re.VERBOSE))
로그인 후 복사
['朋友们好啊!']Process finished with exit code 0
로그인 후 복사

2.5、re.VERBOSE(re.X)

verbose是“详实的、冗长的”意思,通过该修饰符可以在正则表达式中加入注释。注意,是往pattern里面加,不是往text加!我一开始以为是可以往text加注释,然后调试半天都得不到结果。。。

text = 'Hello everybody!\n我是xxxxxx拳掌门人xxx~'pattern = r'BODY.*$'print(re.findall(pattern, text, re.I))print(re.findall(pattern, text, re.M))print(re.findall(pattern, text, re.M | re.I))
로그인 후 복사
[][]['body!']Process finished with exit code 0
로그인 후 복사

2.6、修饰符的叠加

使用|可以叠加修饰。

rrreeerrreee

3、正则表达式函数

3.1、查找单个匹配项的函数

re.A는 ASCII 코드에서 지원하는 문자만 일치하므로 문자는 구체적으로 참조합니까? 아래 사진은 바이두백과사전에서 발췌한 것입니다. 한자는 포함되지 않습니다. 이므로 수식어가 re.A이면 한자와 일치할 수 없습니다~rrreeew+는 하나 이상의 영숫자 및 밑줄 친 한자와 일치하는 데 사용됩니다
函数 功能
search 从任意位置开始搜索
match 从开头搜索,不用完全匹配
fullmatch 여기에 이미지 설명 삽입
rrreee

🎜 2.3, re.DOTALL (re.S) 🎜🎜🎜정규 표현식 모드에서는 .여기에 이미지 설명 삽입🎜rrreee🎜.* 기능은 다음과 같습니다. 길이가 0 이상인 문자(문자열)를 일치시키세요. 음, 말도 안되는 것 같나요? 실제로 전체 단락이 개행 문자로 잘리지 않는 한 전체 문자열(및 빈 문자열)을 얻을 수 있습니다. 🎜rrreee🎜🎜2.4, re.MULTILINE(re.M)🎜🎜🎜$는 문자열의 끝인 와 일치합니다. ^ 문자열의 시작 위치를 찾습니다. 기본적으로 새 줄을 바꾸면 새 줄의 시작/끝을 찾을 수 없습니다. 그러나 re.M을 사용할 수 있습니다. 이를 수정하려면 여러 줄 모드입니다. 🎜rrreeerrreee🎜🎜2.5, re.VERBOSE(re. 텍스트가 아닌 패턴에 추가한다는 점에 유의하세요! 처음에는 text에 주석을 추가할 수 있을 거라 생각했는데, 오랫동안 디버깅을 했더니 아무런 결과도 나오지 않았습니다. . . 🎜rrreeerrree🎜🎜2.6. 수정자의 중첩🎜🎜🎜수정사항을 중첩하려면 |를 사용하세요. 🎜rrreeerrreee🎜🎜3. 정규 표현식 함수🎜🎜🎜🎜3.1. 단일 일치 항목을 찾는 함수🎜🎜

🎜검색🎜🎜어디에서나 검색🎜🎜🎜일치🎜🎜처음부터 검색 , 아니오 정확히 일치해야 합니다🎜🎜🎜fullmatch🎜🎜처음부터 검색하면 정확히 일치해야 합니다🎜🎜🎜🎜🎜사실 원래 제가 직접 예제를 작성했는데 브라우저가 잘못 닫았습니다. 나 , 그리고 저장하지 않았습니다 (멘탈이 즉시 폭발했습니다)
함수 함수 🎜

위 내용은 Python 정규식에 대한 참고 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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