1. 程式人生 > >Python 3.6 正則表示式一

Python 3.6 正則表示式一

"""
正則表示式的主要功能就是匹配字串
"""

import re

# 基本用法
ret = re.findall('world', "hello world**Worldworld")  # 查詢制定字串,以list形式返回
print(ret)
"""
原字元
"""

# 1. '.' 萬用字元:代表任意字元,一個點一個字元
ret = re.findall('w...d', "hello world")
print(ret)  # ['world']

ret = re.findall('w...d', "hello w\nrld")
print(ret)  # [] 除了\n其他都行,當然也可以通過修改findall的第三個引數去修改成連\n都能匹配

# 2. '^' 尖角符:必須從字串的起始位置開始匹配,不考慮後續字串中是否存在
ret = re.findall('^w...d', "hello world")
print(ret)  # []

ret = re.findall('^w...d', "worldhello world")
print(ret)  # ['world']

# 3. '$' 只從最後開始匹配
ret = re.findall('w...d', "hello world!!")
print(ret)  # ['world']

ret = re.findall('w...d$', "hello world!!")
print(ret)  # []

ret = re.findall('w...d$', "hello world!!world")
print(ret)  # ['world']

# *************************************************************

# 4. '*' 重複匹配 允許*之前的一個字元重複多次

ret = re.findall('hello*world', 'hellooooooworld')
print(ret)  # ['hellooooooworld']

ret = re.findall('hello.*world', '
[email protected]
@sssworld') # 如果我使用萬用字元'.'他就能匹配任意字元 print(ret) # ['[email protected]@sssworld'] # 5. '+' 也是重複匹配 但是至少得有一個 ret = re.findall('hello*world', 'hellworld') print(ret) # ['hellworld'] ret = re.findall('hello+world', 'hellworld') print(ret) # [] # 也就是說'+'號之前的o,在目標字串裡必須出現一次,但是'*'號允許一次也不出現 # 6. '?' 還是重複匹配,但是隻能是0次或者1次多了就不行 ret = re.findall('hello?world', 'hellworld') print(ret) # ['hellworld'] ret = re.findall('hello?world', 'helloworld') print(ret) # ['helloworld'] ret = re.findall('hello?world', 'helloooworld') print(ret) # [] # 7. '{}' 大括號也是重複匹配,但是匹配幾次自己可以設定 ret = re.findall('a{5}b', 'aaaabbaaa') # 要求a重複5次 print(ret) # [] ret = re.findall('a{5}b', 'aaaaabbaaa') print(ret) # ['aaaaab'] ret = re.findall('a{1,3}b', 'ba***aab***aaab***aaaaaaaabaaa') print(ret) # ['aab', 'aaab', 'aaab']