python 中的正規表示式學習筆記

xiaosheng發表於2021-05-05
# 判斷一個字串是否在另外一個字串中
# 方法一
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++!!
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章