欢迎访问宙启技术站
智能推送

在Python中使用正则表达式(RegularExpression)的方法总结

发布时间:2023-06-03 03:00:15

正则表达式是一种面向文本的匹配规则,可以用来检索、匹配文本中的特定字符序列,非常灵活。在Python中,可以使用re模块来使用正则表达式,该模块提供了很多函数和方法,用于处理字符串、匹配和替换,以下是对Python正则表达式的使用进行总结,包括了使用正则表达式的基本语法、re模块中的函数和方法,以及一些小技巧。

1. 正则表达式语法

正则表达式是由一个或多个字符、操作符和元字符组成的文本模式。通常用来匹配、查找或替换文本中的特定字符组合。下面列举一些常见的操作符和元字符:

1.1 字符集合

用方括号[]来表示,表示匹配方括号里面的任意一个字符。例如[abc]表示匹配字符a或字符b或字符c。

1.2 选择符

用竖线|来表示,表示匹配左右两边任意一个字符。例如ab|c表示匹配字符ab或字符c。

1.3 通配符

.来表示,表示匹配任意一个字符。例如a.b表示匹配 个字符为a,第三个字符为b,而第二个字符可以是任意一个字符。

1.4 限定符

用花括号{}来表示,表示匹配花括号里面的字符出现的次数。例如a{3}表示匹配三个连续的字符a。

1.5 字符转义

用反斜杠\来表示,可以将一个特殊字符转义为普通字符。例如abc\.表示匹配abc.。

2. re模块中的函数和方法

re模块提供了很多函数和方法,用于处理字符串、匹配和替换。下面列举一些常用的函数和方法:

2.1 re.match()

re.match()函数用于从字符串开头匹配一个模式,如果匹配成功返回一个匹配对象,否则返回None。例如:

import re
pattern = 'hello'
string = 'hello world'
match_obj = re.match(pattern, string)
if match_obj:
    print(match_obj.group())
else:
    print('match failed')

输出结果为hello。

2.2 re.search()

re.search()函数用于在字符串中搜索匹配一个模式,如果匹配成功返回一个匹配对象,否则返回None。与re.match()不同,re.search()会在整个字符串中搜索模式。例如:

import re
pattern = 'world'
string = 'hello world'
search_obj = re.search(pattern, string)
if search_obj:
    print(search_obj.group())
else:
    print('search failed')

输出结果为world。

2.3 re.findall()

re.findall()函数用于查找字符串中所有匹配一个模式的字串,并返回一个列表,如果没有找到返回空列表。例如:

import re
pattern = 'ab'
string = 'abc abd abe'
findall_obj = re.findall(pattern, string)
print(findall_obj)

输出结果为['ab', 'ab']。

2.4 re.sub()

re.sub()函数用于替换匹配的字串,并返回替换后的字符串。例如:

import re
pattern = 'ab'
replacement = 'cd'
string = 'abc abd abe'
sub_str = re.sub(pattern, replacement, string)
print(sub_str)

输出结果为cdc cdd cde。

3. 正则表达式小技巧

3.1 过滤非法字符

在使用正则表达式时,可以过滤掉文本中的非法字符,只保留合法的字符。例如,下面的代码只保留文本中的数字和字母:

import re
pattern = '[^a-zA-Z0-9]'
string = 'abc#123'
filter_str = re.sub(pattern, '', string)
print(filter_str)

输出结果为abc123。

3.2 获取匹配模式中的子串

在正则表达式中,可以使用括号()来分组,然后使用group()方法来获取匹配模式中的子串。例如:

import re
pattern = '(\w+) (\d+)'
string = 'hello 123'
match_obj = re.match(pattern, string)
if match_obj:
    print(match_obj.group(1))
    print(match_obj.group(2))
else:
    print('match failed')

输出结果为hello和123。

3.3 查找图片地址

在网页抓取中,可以使用正则表达式来查找图片地址,例如:

import re
import requests
url = 'http://www.example.com'
html = requests.get(url).text
pattern = r'<img src="([^"]+\.jpg)"'
images = re.findall(pattern, html)
print(images)

以上代码将返回网页中所有的.jpg图片地址。

4. 总结

正则表达式是Python中非常常用的功能模块之一,掌握正则表达式的基本语法和re模块中的函数、方法,能够快速准确地处理文本和提取信息。在使用正则表达式时,我们还可以通过一些小技巧来优化代码和提高效率。不过需要注意的是,正则表达式虽然强大,但也需要谨慎使用,写出良好的正则表达式需要一定的经验和技巧。