Python3 re 正则表达式常用示例

Python 提供了 re 模块实现正则表达式功能,通过正则表达式能够非常方便地处理字符串,但是正则表达式的编写较为复杂,本文记录一些常用的 ptyhon 正则表达式示例。

1. Python 正则表达式函数

(1) re.sub 替换字符串中的匹配项,函数原型如下: re.sub(pattern, repl, string, count=0, flags=0)

  • pattern 为匹配模式
  • repl 为替换的目标字符串
  • string 为待处理的原始字符串
  • count 替换的最大次数,默认值为0,所有匹配上的都替换
  • flags 编译时用的匹配模式,比如 re.I 表示大小写不敏感。

(2) re.subn re.subn(pattern, repl, string, count=0, flags=0)

re.subn 与 re.sub 功能类似,区别大于 re.subn 返回值是一个元组,包含 2 个元素,第一个为匹配替换后的字符串,第二个是匹配次数。

2. Python 正则表达式常用示例

(1) 字符串匹配

>>> a = "hello world!"
>>> re.sub('world', 'china', a)
'hello china!'

(2) 字符串之后的所有内容匹配

>>> a = "hello world!"
>>> re.sub('world.*$', '', a)
'hello '

(3)单引号匹配

>>> a = "hi,'hello' world!"
>>> re.sub('\'.*?\'', '', a)
'hi, world!'

(4) key=value 形式匹配

>>> a = 'k1=v1 k2=v2 k3=v3'
>>> re.sub('k2=.*? ', '', a)
'k1=v1 k3=v3'

(5) 括号匹配

>>> a = 'a int, b int(11), c int(20)'
>>> re.sub('int[(](.*?)[)]', 'int', a)
'a int, b int, c int'

(6) 任意数字匹配

>>> a = 'abcdeft 12s 212 2aef'
>>> re.sub('\d', '', a)
'abcdeft s  aef'

或者 

>>> a = 'abcdeft 12s 212 2aef'
>>> re.sub('[0-9]', '', a)
'abcdeft s  aef'

(7) 任意非数字匹配

>>> a = 'abcdeft 12s 212 2aef'
>>> re.sub('\D', '', a)
'122122'

(8) 任意空白字符匹配

>>> a = 'abcdeft 12s 212 2aef'
>>> re.sub('\s', '', a)
'abcdeft12s2122aef'

或

>>> a = 'abcdeft 12s 212 2aef'
>>> re.sub('[\t\n\r\f ]', '', a)
'abcdeft12s2122aef'

(9) 任意字母匹配

>>> a = 'abcdeft 12s 212ABC 2aef'
>>> re.sub('[a-zA-Z]', '', a)
' 12 212 2'

(10) 单词匹配

>>> a='abcdeft 12s   212ABC 2aef'
>>> re.sub(r'\b[^\s]+\b', 'xx', a)
'xx xx   xx xx'


\b 表示空格 
\s 表示空白符
^\s 非空白符
+ 表示多个非空白符

文章评论

0条评论