正则表达式基本语法

2024-07-10 00:10

正则表达式基础教程

一、正则表达式基本概念

正则表达式(Regular Expressio,简称regex或regexp)是一种强大的文本处理工具,它使用特定的模式来描述文本。这些模式可以被用来在大量文本中查找、提取、删除或替换与模式匹配的部分。

二、正则表达式元字符

元字符是正则表达式中的特殊字符,用于定义搜索的模式。以下是常见的元字符:

`.` :匹配任何单个字符(除了换行符)。 `^` :匹配输入字符串的开始位置。 `$` :匹配输入字符串的结束位置。 `` :匹配前一个字符零次或多次。 ` ` :匹配前一个字符一次或多次。 `?` :匹配前一个字符零次或一次。 `{}` :是一个正整数。匹配确定的次。 `{,}` :是一个正整数。至少匹配次。 `{,m}` :m和均为正整数。至少匹配次且最多匹配m次。 `d` :匹配任何数字,等价于`[0-9]`。 `D` :匹配任何非数字字符,等价于`[^0-9]`。 `s` :匹配任何空白字符,包括空格、制表符、换页符等等。 `S` :匹配任何非空白字符。 `w` :匹配任何字母、数字或下划线字符,等价于`[a-zA-Z0-9_]`。 `W` :匹配任何非单词字符,等价于`[^a-zA-Z0-9_]`。

三、正则表达式特殊字符

有些字符在正则表达式中有特殊含义,例如 `.`、``、` `、`?`、`^`、`$`、`[ ]`、`( )`、`|` 和 ``。如果要使用这些特殊字符的字面含义,必须对它们进行转义,即在这些字符前加上反斜杠 ``。例如,要匹配文本中的星号 ``,应使用 ``。

四、正则表达式限定符

限定符用于指定前面的元素应出现的次数。例如:

`?`: 匹配前面的元素零次或一次。 ``: 匹配前面的元素零次或多次。 ` `: 匹配前面的元素一次或多次。 `{}`: 精确匹配前面的元素次。 `{,}`: 至少匹配前面的元素次。 `{,m}`: 匹配前面的元素至少次,最多m次。

五、正则表达式选择符

选择符允许我们使用管道符(|)来选择多个模式中的一个进行匹配。例如,模式 使复杂的模式更加易于阅读和管理。例如,模式

七、正则表达式锚点

锚点用于指定模式必须出现在指定位置。例如:

`^`: 文本的开头。 `$`: 文本的结尾。 `b`: 一个单词的边界(即字与空格之间)。 `B`: 一个非单词边界(即非字与空格之间)。

八、正则表达式替换

在某些编程语言中,正则表达式还支持替换功能,允许我们用新的字符串替换与模式匹配的字符串部分。例如,在Pyho中,可以使用re模块的sub方法进行替换:re.sub(paer, repl, srig)。其中,paer是要搜索的模式,repl是替换的字符串,srig是待处理的文本字符串。例如:re.sub(r'a ', 'A', 'aaAaxaaa') 结果为 'AxAx'。

九、正则表达式优先级

1. 贪婪优先级:在正则表达式中,“贪婪”指的是尽可能多地匹配字符直到无法再进行匹配为止。“贪婪”优先级意味着运算符会尽可能多地匹配字符,除非后面有更具体的模式需要匹配。例如,“.”是一个贪婪优先级运算符,它会尽可能多地匹配任何字符(除了换行符)。“a.b”会匹配XXXX表示任意字符和任意次数(除了换行符)。

2. 懒惰优先级:与贪婪优先级相反,懒惰优先级会尽可能少地匹配字符。在懒惰优先级下,运算符会尽可能少地匹配字符,直到遇到下一个更具体的模式为止。例如,“a.?b”会匹配)。

正则表达式是一个强大的文本处理工具,通过使用元字符、特殊字符、限定符、选择符、分组、锚点、替换以及优先级等功能,可以在大量文本中快速、准确地查找、提取、删除或替换特定模式的内容。正则表达式的优先级是贪婪优先级,但可以通过懒惰优先级进行修改。