python 中的正则表达式学习笔记

Python
401
0
0
2022-04-11
# 判断一个字符串是否在另外一个字符串中
# 方法一
str = 'php|java|python|javascript|html'
print('php' in str)  # True

# 方法二
import re
str = 'php|java|python|javascript|html'

result = re.findall('php',str)
print(result)  # ['php']

# ----------------------------------------

# 返回一个字符串中所有的数字
import re

str = 'php123java312python123javascript123html'
print(re.findall('\d', str)) # ['1', '2', '3', '3', '1', '2', '1', '2', '3', '1', '2', '3']

# ----------------------------------------

# 匹配指定字符
import re

str = 'abc,afc,adc,arc'
# 匹配是 abc 或者 afc的
print(re.findall('a[bf]c',str))  # ['abc', 'afc']
# 匹配不是 abc 或者 afc的
print(re.findall('a[^bf]c',str))  # ['adc', 'arc']

# ----------------------------------------

# 数量词
import re

str = 'pytho1python2pythonn0'
# * 匹配 0 次或者无限多次
print(re.findall('python*',str)) # ['pytho', 'python', 'pythonn']
# + 匹配 1 次或者无限多次
print(re.findall('python+',str)) # ['python', 'pythonn']
# ? 匹配 0 次或者 1 次
print(re.findall('python?',str)) # ['pytho', 'python', 'python']

# ----------------------------------------

# () 是匹配组的
str = 'PythonPythonPython'
print(re.findall('(Python){3}',str)) # [' ']

str = 'PythonPython'
print(re.findall('(Python){3}',str)) # []

str = 'PythonPythonPythonPython'
print(re.findall('(Python){3}',str)) # ['Python']

# ----------------------------------------

# 忽略大小写
str = 'PythonPHPc++'
print(re.findall('php',str,re.I)) # ['PHP']

# ----------------------------------------

# 匹配所有的字符, 加上 re.S 以后, . 表示匹配所有的字符, 包含了换行符 \n
# 原本 . 是匹配除了换行符 \n 之外其他的所有字符
str = 'PythonPHPc++'
print(re.findall('php',str,re.S)) 

# ----------------------------------------

# 字符串替换
str = 'c++PythonPHPc++'
print(re.sub("c\+\+", 'Go', str)) # GoPythonPHPGo
print(re.sub("c\+\+", 'Go', str, 1)) # GoPythonPHPc++

# 其中 re.sub() 中的第二个参数还可以接收一个函数, 如下
str = 'c++PythonPHPc++'
def deal_str(value):
  match = value.group()
    return '!!' + match + '!!'

print(re.sub("c\+\+", deal_str, str)) # !!c++!!PythonPHP!!c++!!