深入明确正则表达式:从入门到精通
title: 深入明确正则表达式:从入门到精通date: 2024/4/30 18:37:21
updated: 2024/4/30 18:37:21
tags:
[*]正则
[*]Python
[*]文本分析
[*]日志发掘
[*]数据清洗
[*]模式匹配
[*]工具推荐
https://img2024.cnblogs.com/blog/1546022/202404/1546022-20240430184723141-1369695230.png
第一章:正则表达式入门
介绍正则表达式的基本概念和语法
正则表达式是一种用于描述字符串模式的表达式,由普通字符和特殊字符组成。常用的特殊字符包括:
[*].:匹配任意单个字符
[*]*:匹配前面的字符0次或多次
[*]+:匹配前面的字符1次或多次
[*]?:匹配前面的字符0次或1次
[*][]:匹配括号内的任意一个字符
[*]^:匹配字符串的开头
[*]$:匹配字符串的末端
[*]\d:匹配任意数字
[*]\w:匹配任意字母、数字或下划线
[*]\s:匹配任意空白字符
正则表达式在文本处理中的应用场景
正则表达式在文本处理中有广泛的应用场景,例如:
[*]检索文本中符合特定模式的内容
[*]更换文本中的特定内容
[*]提取文本中的关键信息
[*]数据清洗和格式化
[*]日志分析和信息抽取
使用Python中的re模块进行简单的正则表达式匹配
在Python中,我们可以使用re模块来进行正则表达式的匹配操作。下面是一个简单的示例代码,演示如何使用re模块进行正则表达式匹配:
import re
# 定义一个待匹配的字符串
text = 'Hello, 123456!'
# 定义一个正则表达式模式,匹配数字
pattern = r'\d+'
# 使用re.findall()函数进行匹配
result = re.findall(pattern, text)
# 输出匹配结果
print(result)在上面的示例中,我们定义了一个待匹配的字符串text,然后使用\d+这个正则表达式模式匹配字符串中的数字。末了使用re.findall()函数进行匹配,并输出匹配效果。运行代码后,将会输出匹配到的数字['123456']。
第二章:正则表达式基础
字符类和元字符的使用
[*]字符类:用方括号[]定义,例如 匹配字符 a、b 或 c。[^abc] 匹配除 a、b、c 之外的任何字符。
[*]元字符:是具有特殊含义的字符,如我们在第一章提到的那些,如 .、*、+、?、^、$ 等。例如,. 表示匹配任意字符,^ 表示匹配行的开始,$ 表示匹配行的竣事。
量词和分组
[*]量词:
[*]*:匹配前面的字符0次或多次。
[*]+:匹配前面的字符1次或多次。
[*]?:匹配前面的字符0次或1次。
[*]{n}:精确匹配 n 次。
[*]{n,}:匹配 n 次或更多次。
[*]{n,m}:匹配 n 到 m 次。
[*]分组:用圆括号 () 将一组字符括起来,可以对这部分进行操作,如重复或提取。例如 (abc) 可以作为一个团体匹配。
贪婪匹配与非贪婪匹配
[*]贪婪匹配:默认情况下,正则表达式会尽可能多地匹配字符。例如 .* 会匹配尽可能多的字符直到遇到非匹配为止。
[*]非贪婪匹配:在某些模式后加上 ? 可以使其变为非贪婪,例如 .*? 将尽可能少地匹配字符。
界限匹配和位置匹配
[*]界限匹配:
[*]^:匹配字符串的开始。
[*]$:匹配字符串的竣事。
[*]\b:匹配单词界限,即单词的开始或竣事。
[*]\B:匹配非单词界限。
[*]位置匹配:
[*]\A:匹配字符串的开始,等同于 ^。
[*]\Z:匹配字符串的竣事,但不包括换行符,等同于 $。
[*]\z:匹配字符串的竣事,包括换行符。
第三章:进阶正则表达式技巧
捕捉组和非捕捉组
[*]捕捉组:用圆括号 () 括起来的部分,可以在匹配后被提取或者用于后续的引用。
[*]非捕捉组:在捕捉组内加上 ?:,例如 (?:...),表示该组只匹配,但不会被捕捉。
回溯引用
[*]回溯引用:使用捕捉组的内容在后面进行引用,例如 \1 表示引用第一个捕捉组的内容,\2 表示引用第二个捕捉组的内容。
零宽断言的应用
<ul>零宽断言:零宽断言是指在匹配字符串时,不斲丧字符,只匹配位置。常见的零宽断言包括:
<ul>(?=...):正向肯定预查,表示所在位置后面能匹配括号内的表达式。
(?!...):正向否定预查,表示所在位置后面不能匹配括号内的表达式。
(?:反向否定预查,表示所在位置前面不能匹配括号内的表达式。
页:
[1]