📜  python中的模式程序(1)

📅  最后修改于: 2023-12-03 15:04:36.796000             🧑  作者: Mango

Python中的模式程序

在Python中,我们可以使用正则表达式来处理和匹配文本中的模式。正则表达式是一种由特定字符和符号组成的序列,用于描述文本中的模式。可以通过Python标准库中提供的re模块来使用正则表达式。

正则表达式的语法

正则表达式的语法由一系列特殊字符和符号组成,它们用于描述文本中的模式。正则表达式中最常用的特殊字符和符号如下:

  • ".":匹配任意字符(除了换行符);
  • "^":匹配文本开头;
  • "$":匹配文本结尾;
  • "*":匹配前面的字符零次或多次;
  • "+":匹配前面的字符一次或多次;
  • "?":匹配前面的字符零次或一次;
  • "[]":匹配方括号内的任意一个字符;
  • "[^]":匹配不在方括号内的任意一个字符;
  • "|":匹配两个或多个模式中的任意一个;
  • "()":分组,将多个模式视为一个整体;
  • "\":转义字符。
例子

下面是一些使用正则表达式匹配模式的例子:

匹配手机号码
import re

phone_numbers = [
    '13812345678',
    '13011112222',
    '15088889999',
    '17700000011',
]

pattern = r'^1[3-9]\d{9}$'

for phone_number in phone_numbers:
    if re.match(pattern, phone_number):
        print(f'{phone_number} 是手机号码')
    else:
        print(f'{phone_number} 不是手机号码')

输出结果:

13812345678 是手机号码
13011112222 是手机号码
15088889999 是手机号码
17700000011 不是手机号码
匹配电子邮件地址
import re

email_addresses = [
    'abc@123.com',
    'xyz@qq.com',
    'test@test.test',
    'helloworld',
]

pattern = r'^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$'

for email_address in email_addresses:
    if re.match(pattern, email_address):
        print(f'{email_address} 是电子邮件地址')
    else:
        print(f'{email_address} 不是电子邮件地址')

输出结果:

abc@123.com 是电子邮件地址
xyz@qq.com 是电子邮件地址
test@test.test 是电子邮件地址
helloworld 不是电子邮件地址
替换文本中的字符
import re

text = 'hello, world!'

pattern = r'o'

new_text = re.sub(pattern, '*', text)

print(new_text) # 输出:hell*, w*rld!
分割文本
import re

text = 'a b   c d e   f'

pattern = r'\s+'

new_text = re.split(pattern, text)

print(new_text) # 输出:['a', 'b', 'c', 'd', 'e', 'f']
总结

正则表达式在Python中是非常常用和强大的工具,它可以帮助我们处理和匹配文本中的模式。在使用正则表达式时需要熟悉其语法和常见的用法,可以通过Python标准库中的re模块来使用正则表达式。