Python 语言-第三章正则表达式(Python language – Chapter 3 regular expressions)

第三章 正则表达式

  • 正则表达式是一个特殊的字符序列,可以用于搜索、替换和解析字符串。

3.5.1 正则表达式元字符

  • 正则表达式右普通字符和元字符组成。普通字符表示自身;元字符有特殊含义
  • 数量限定符

    元字符
    描述
    示例

    *
    匹配前面 0 个或多个字符
    使用”ab*”可匹配到”a”、”b”、”abc”等

    ?
    匹配前面 0 个或 1 个字符
    使用”ab?”可匹配到”a”或”ab”,但不可匹配”abb”

    +
    匹配前面 1 个或多个字符
    使用”ab+”可匹配到”ab”、”abb”等

    {n}
    匹配前面字符 n 次
    使用”ab{3}”可匹配到”abbb”,但不可匹配”ab”或”abb”

    {n,}
    匹配前面字符至少 n 次
    使用”ab{3,}”可匹配”abbb”或”abbbbb”,但不可匹配”ab”或”abb”

    {n,m}
    匹配前面字符 n 到 m 次
    使用”ab{3,4}可匹配”abbb”或”abbbb”,但不可匹配”ab”或”abb”

元字符 描述 示例
* 匹配前面 0 个或多个字符 使用”ab*”可匹配到”a”、”b”、”abc”等
? 匹配前面 0 个或 1 个字符 使用”ab?”可匹配到”a”或”ab”,但不可匹配”abb”
+ 匹配前面 1 个或多个字符 使用”ab+”可匹配到”ab”、”abb”等
{n} 匹配前面字符 n 次 使用”ab{3}”可匹配到”abbb”,但不可匹配”ab”或”abb”
{n,} 匹配前面字符至少 n 次 使用”ab{3,}”可匹配”abbb”或”abbbbb”,但不可匹配”ab”或”abb”
{n,m} 匹配前面字符 n 到 m 次 使用”ab{3,4}可匹配”abbb”或”abbbb”,但不可匹配”ab”或”abb”
  • 字符限定符

    元字符
    描述
    示例

    []
    匹配字符集内任意一个元素
    使用”[abcd]”可匹配”a”、”b”或”c”

    [^]
    匹配字符集外的任一字符
    使用”[ ^abcd]”可匹配任一非 abcd 的字符

    [-]
    匹配字符集内的任一字符(包括未列出的字符)
    使用”[a-z]”可匹配任一小写字母的字符,如”g”、”h”

    [^-]
    匹配字符集外任一字符(包括未列出的字符)
    使用”[ ^ a-z]”可匹配任一非小写字母的字符

    \d
    匹配任一数字字符,等价于[0-9]

    \D
    匹配任一非数字字符,等价于[ ^0-9]

    \w
    匹配任一数字字母字符,等价于[0-9A-Za-z]

    \W
    匹配任一非数字字母字符,等价于[ ^ 0-9A-Za-z]

    \s
    匹配任一空白字符,等价于[\t\n\r\f]

    \S
    匹配任一非空白字符,等价于[ ^ \t\n\r\f]

    .
    匹配换行符(\n)之外的任一字符

元字符 描述 示例
[] 匹配字符集内任意一个元素 使用”[abcd]”可匹配”a”、”b”或”c”
[^] 匹配字符集外的任一字符 使用”[ ^abcd]”可匹配任一非 abcd 的字符
[-] 匹配字符集内的任一字符(包括未列出的字符) 使用”[a-z]”可匹配任一小写字母的字符,如”g”、”h”
[^-] 匹配字符集外任一字符(包括未列出的字符) 使用”[ ^ a-z]”可匹配任一非小写字母的字符
\d 匹配任一数字字符,等价于[0-9]
\D 匹配任一非数字字符,等价于[ ^0-9]
\w 匹配任一数字字母字符,等价于[0-9A-Za-z]
\W 匹配任一非数字字母字符,等价于[ ^ 0-9A-Za-z]
\s 匹配任一空白字符,等价于[\t\n\r\f]
\S 匹配任一非空白字符,等价于[ ^ \t\n\r\f]
. 匹配换行符(\n)之外的任一字符
  • 定位符

    元字符
    描述

    ^
    匹配输入字符串的开始位置

    $
    匹配输入字符串的结束位置

    /b
    匹配一个单词边界,也就是指单词和空格间的位置

    /B
    匹配非单词边界

元字符 描述
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
/b 匹配一个单词边界,也就是指单词和空格间的位置
/B 匹配非单词边界
  • 其他常用元字符

    元字符
    作用
    例子

    圆括号”( )”
    作为分组符使用,将括号中的内容定义为一个组并将该表达式的字符保存到一个临时区域。
    “(ab){3}”可以匹配”ababab”

    竖线”|”
    作为选择匹配符使用,用来对两个匹配条件进行逻辑或运算。
    “com|net|org”可以匹配”com”、”net”或”org”

    反斜杠” \ ”
    作为转义符使用
    “\n”用于匹配换行符,” \ \ “用于匹配反斜杠

元字符 作用 例子
圆括号”( )” 作为分组符使用,将括号中的内容定义为一个组并将该表达式的字符保存到一个临时区域。 “(ab){3}”可以匹配”ababab”
竖线”|” 作为选择匹配符使用,用来对两个匹配条件进行逻辑或运算。 “com|net|org”可以匹配”com”、”net”或”org”
反斜杠” \ “ 作为转义符使用 “\n”用于匹配换行符,” \ \ “用于匹配反斜杠

3.5.2 正则表达式处理函数

  • 在Python中,正则表达式功能通过正则表达式模块(re模块)来实现。

3.5.2.1 创建正则表达式

  • 使用compile()函数创建正则表达式

    功能:是将字符串形式的正则表达式转换为正则表达式对象。

    使用:使用前需要导入 re 模块

    语法格式:
    compile(pattern[,flags])

    pattern为字符串,表示要匹配的正则表达式模式
    flags是可选项,用于设置匹配选项标志(例如是否区别大小写,多行匹配等)

  • 功能:是将字符串形式的正则表达式转换为正则表达式对象。
  • 使用:使用前需要导入 re 模块
  • 语法格式:
    compile(pattern[,flags])

    pattern为字符串,表示要匹配的正则表达式模式
    flags是可选项,用于设置匹配选项标志(例如是否区别大小写,多行匹配等)

  • pattern为字符串,表示要匹配的正则表达式模式
    flags是可选项,用于设置匹配选项标志(例如是否区别大小写,多行匹配等)

3.5.2.2 搜索字符串

  • 在没有创建正则表达式对象的前提下,可通过 re 模块的函数对字符串进行匹配和搜索
  • re.match():从字符串的起始位置对字符串匹配

    语法格式:
    re.match(pattern,string[,flags])

    string指定要匹配的字符串
    flags是可选项,为标志位,例如是否区别大小写,多行匹配等。

    匹配成功后,返回一个匹配的match对象;否则返回None。

    调用 match ( )函数后,可以使用匹配对象的 group(num) 或 groups( ) 方法来获取匹配表达式。

    group(num)可以匹配整个表达式的字符串,可以一次输入多个组号,在这个情况下它将返回一个这些组号所对应的元组;
    groups( )则返回一个包含所有小组字符串的元组。

  • 语法格式:
    re.match(pattern,string[,flags])

    string指定要匹配的字符串
    flags是可选项,为标志位,例如是否区别大小写,多行匹配等。

  • 匹配成功后,返回一个匹配的match对象;否则返回None。
  • 调用 match ( )函数后,可以使用匹配对象的 group(num) 或 groups( ) 方法来获取匹配表达式。

    group(num)可以匹配整个表达式的字符串,可以一次输入多个组号,在这个情况下它将返回一个这些组号所对应的元组;
    groups( )则返回一个包含所有小组字符串的元组。

  • group(num)可以匹配整个表达式的字符串,可以一次输入多个组号,在这个情况下它将返回一个这些组号所对应的元组;
  • groups( )则返回一个包含所有小组字符串的元组。
  • re.search():扫描整个字符串并返回第一个成功的匹配。

    语法格式:
    re.search(pattern,string[,flags])

    如果匹配成功,则返回一匹配的对象,否则返回None。

  • 语法格式:
    re.search(pattern,string[,flags])

    如果匹配成功,则返回一匹配的对象,否则返回None。

  • 如果匹配成功,则返回一匹配的对象,否则返回None。
  • re.fandall():搜索字符串并以列表形式返回全部能匹配正则表达式的子串

    语法格式:
    re.fandall(pattern,string[,flags])

  • 语法格式:
    re.fandall(pattern,string[,flags])

————————

Chapter 3 regular expressions

  • A regular expression is a special sequence of characters that can be used to search, replace, and parse strings.

3.5.1 regular expression metacharacters

  • Regular expressions consist of normal characters and metacharacters. Ordinary characters represent themselves; Metacharacters have special meanings
  • Quantity qualifier
    Metacharacter
    describe
    Example
    *
    Match the first 0 or more characters
    Use “ab *” to match “a”, “B”, “ABC”, etc
    ?
    Match the first 0 or 1 characters
    Use “ab?” Can match to ‘a’ or ‘ab’, but not ‘ABB’
    +
    Match the first 1 or more characters
    Use “ab +” to match “ab”, “ABB”, etc
    {n}
    Match previous characters n times
    Use ‘ab {3}’ to match ‘ABBB’, but not ‘ab’ or ‘ABB’
    {n,}
    Match previous characters at least N times
    Use ‘ab {3,}’ to match ‘ABBB’ or ‘abbbbbb’, but not ‘ab’ or ‘ABB’
    {n,m}
    Match previous characters n to m times
    Use “ab {3,4} to match” ABBB “or” abbbb “, but not” ab “or” ABB ““
元字符 描述 示例
* 匹配前面 0 个或多个字符 使用”ab*”可匹配到”a”、”b”、”abc”等
? 匹配前面 0 个或 1 个字符 使用”ab?”可匹配到”a”或”ab”,但不可匹配”abb”
+ 匹配前面 1 个或多个字符 使用”ab+”可匹配到”ab”、”abb”等
{n} 匹配前面字符 n 次 使用”ab{3}”可匹配到”abbb”,但不可匹配”ab”或”abb”
{n,} 匹配前面字符至少 n 次 使用”ab{3,}”可匹配”abbb”或”abbbbb”,但不可匹配”ab”或”abb”
{n,m} 匹配前面字符 n 到 m 次 使用”ab{3,4}可匹配”abbb”或”abbbb”,但不可匹配”ab”或”abb”
  • Character qualifier
    Metacharacter
    describe
    Example
    []
    Matches any element in the character set
    Use ‘[ABCD]’ to match ‘a’, ‘B’, or ‘C’
    [^]
    Matches any character outside the character set
    Use “[^ ABCD]” to match any non ABCD character
    [-]
    Matches any character in the character set, including characters not listed
    Use “[A-Z]” to match any lowercase character, such as “g”, “H”
    [^-]
    Match any character outside the character set (including characters not listed)
    Use “[^ A-Z]” to match any non lowercase character
    \d
    Match any numeric character, equivalent to [0-9]
    \D
    Match any non numeric character, equivalent to [^ 0-9]
    \w
    Match any alphanumeric character, equivalent to [0-9a-zA-Z]
    \W
    Match any non alphanumeric character, equivalent to [^ 0-9a-zA-Z]
    \s
    Match any white space character, equivalent to [\ t \ n \ R \ F]
    \S
    Match any non white space character, equivalent to [^ \ t \ n \ R \ F]
    .
    Matches any character other than the newline character (\ n)
元字符 描述 示例
[] 匹配字符集内任意一个元素 使用”[abcd]”可匹配”a”、”b”或”c”
[^] 匹配字符集外的任一字符 使用”[ ^abcd]”可匹配任一非 abcd 的字符
[-] 匹配字符集内的任一字符(包括未列出的字符) 使用”[a-z]”可匹配任一小写字母的字符,如”g”、”h”
[^-] 匹配字符集外任一字符(包括未列出的字符) 使用”[ ^ a-z]”可匹配任一非小写字母的字符
\d 匹配任一数字字符,等价于[0-9]
\D 匹配任一非数字字符,等价于[ ^0-9]
\w 匹配任一数字字母字符,等价于[0-9A-Za-z]
\W 匹配任一非数字字母字符,等价于[ ^ 0-9A-Za-z]
\s 匹配任一空白字符,等价于[\t\n\r\f]
\S 匹配任一非空白字符,等价于[ ^ \t\n\r\f]
. 匹配换行符(\n)之外的任一字符
  • Locator
    Metacharacter
    describe
    ^
    Matches the start position of the input string
    $
    Matches the end of the input string
    /b
    Match a word boundary, that is, the position between the word and the space
    /B
    Match non word boundaries
元字符 描述
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
/b 匹配一个单词边界,也就是指单词和空格间的位置
/B 匹配非单词边界
  • Other common metacharacters
    Metacharacter
    effect
    example
    Parenthesis “()”
    As a grouping character, define the contents in parentheses as a group and save the characters of the expression to a temporary area.
    “(AB) {3}” can match “ababab”
    Vertical line “|”
    It is used as a selection match to perform logical or operation on two matching conditions.
    “Com|net|org” can match “com”, “net” or “org”
    Backslash “\”
    Use as escape character
    “\ n” is used to match line breaks and “\ \” is used to match backslashes
元字符 作用 例子
圆括号”( )” 作为分组符使用,将括号中的内容定义为一个组并将该表达式的字符保存到一个临时区域。 “(ab){3}”可以匹配”ababab”
竖线”|” 作为选择匹配符使用,用来对两个匹配条件进行逻辑或运算。 “com|net|org”可以匹配”com”、”net”或”org”
反斜杠” \ “ 作为转义符使用 “\n”用于匹配换行符,” \ \ “用于匹配反斜杠

3.5.2 regular expression processing function

  • In Python, the regular expression function is implemented through the regular expression module (re module).

3.5.2.1 creating regular expressions

  • Use the compile() function to create a regular expression
    Function: convert regular expression in string form into regular expression object.
    Use: import re module before use
    Syntax format:
    compile(pattern[,flags])
    Pattern is a string representing the regular expression pattern to match
    Flags is optional, which is used to set the matching option flag (for example, whether to distinguish case, multi line matching, etc.)
  • Function: convert regular expression in string form into regular expression object.
  • Use: import re module before use
  • Syntax format:
    compile(pattern[,flags])
    Pattern is a string representing the regular expression pattern to match
    Flags is optional, which is used to set the matching option flag (for example, whether to distinguish case, multi line matching, etc.)
  • Pattern is a string representing the regular expression pattern to match
    Flags is optional, which is used to set the matching option flag (for example, whether to distinguish case, multi line matching, etc.)

3.5.2.2 search string

  • Without creating a regular expression object, you can match and search strings through the functions of the re module
  • re. Match(): matches the string from the beginning of the string
    Syntax format:
    re. match(pattern,string[,flags])
    String specifies the string to match
    Flags is optional and is the flag bit, such as whether to distinguish case, multi line matching, etc.
    After successful matching, a matching match object is returned; Otherwise, return to none.
    After calling the match () function, you can use the group (Num) or groups () methods of the matching object to get the matching expression.
    Group (Num) can match the string of the entire expression, and multiple group numbers can be entered at one time. In this case, it will return a tuple corresponding to these group numbers;
    Groups () returns a tuple containing all the group strings.
  • Syntax format:
    re. match(pattern,string[,flags])
    String specifies the string to match
    Flags is optional and is the flag bit, such as whether to distinguish case, multi line matching, etc.
  • After successful matching, a matching match object is returned; Otherwise, return to none.
  • After calling the match () function, you can use the group (Num) or groups () methods of the matching object to get the matching expression.
    Group (Num) can match the string of the entire expression, and multiple group numbers can be entered at one time. In this case, it will return a tuple corresponding to these group numbers;
    Groups () returns a tuple containing all the group strings.
  • Group (Num) can match the string of the entire expression, and multiple group numbers can be entered at one time. In this case, it will return a tuple corresponding to these group numbers;
  • Groups () returns a tuple containing all the group strings.
  • re. Search(): scans the entire string and returns the first successful match.
    Syntax format:
    re. search(pattern,string[,flags])
    If the matching is successful, a matching object is returned; otherwise, none is returned.
  • Syntax format:
    re. search(pattern,string[,flags])
    If the matching is successful, a matching object is returned; otherwise, none is returned.
  • If the matching is successful, a matching object is returned; otherwise, none is returned.
  • re. Fandall(): searches for strings and returns all substrings that match regular expressions as a list
    Syntax format:
    re. fandall(pattern,string[,flags])
  • 语法格式:
    re.fandall(pattern,string[,flags])