python 正则表达式 regex

正则表达式对于字符串的处理非常高效

  • 简单的使用如下:
  1. import re 导入正则表达式模块

    • python所有正则表达式的函数都在re模块中
  2. re.compile()创建一个Regex对象

  3. Regex对象的search() 方法查找传入的字符串:

    • 如果字符串中没有找到该正则表达式的匹配,那么search()将返回None
    • 如果找到了,将返回一个Match对象
  4. 调用Match对象的group()方法返回匹配的字符串

举个电话号码查询的例子

#导入re模块
import re

#创建匹配电话号码的正则表达式对象 `phoneNumRegex `
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d\d\d\d\d')

mo = phoneNumRegex .search('My number is 010-12345678')
if mo is not None:
  print('Number is:' + mo.group())
else:
  print('Not found!')
  • 匹配模式:
符号 意义
\d 表示一个数字字符,即任何一个0到9的数字
\D 除0到9的数字以外的任何数字
\w 任何字母、数字或下划线字符(‘单词word’)
\W 除字母、数字或下划线以外的任何字符
\s 空格、制表符或换行符(‘空白space’)
\S 除空格、制表符或换行符以外的任何字符
. 句点(通配符),匹配除了换行符以外的所有字符
  • 更多匹配方法:

用括号分组 ()

用管道匹配多个分组 |

用问号实现可以选匹配 ?
匹配这个问号之前的分组0次或者1次

用加号实现多次匹配 +
匹配这个问号之前的分组1次或者多次

用星号实现任意次匹配 *
匹配这个问号之前的分组0次或者多次

用花括号实现指定次数匹配 {}
匹配这个问号之前的分组特定次数

花括号默认为贪心匹配,即匹配最长的字符串
非贪心匹配需要在花括号后添加问号,{}?

{n}匹配n次前面的分组。
{n,}匹配n次或更多前面的分组。
{,m}匹配零次到m次前面的分组。
{n,m}匹配至少n次、至多m次前面的分组。
{n,m}?或*?或+?对前面的分组进行非贪心匹配。

Carrots(caret) cost dollars.
插入字符 ^ 匹配开始
^spam表示字符串必须以spam开始
美元字符 表示字符串必须以spam结束

[abc]匹配方括号内的任意字符(诸如a、b或c)。
[^abc]匹配不在方括号内的任意字符。

Regex对象的findall() 方法

你可能感兴趣的:(python 正则表达式 regex)