正则表达式 非获取匹配

import re
print(re.match("win (7|vista)", "win 7").group()) # win 7
print(re.match("win (7|vista)", "win 7").groups()) # ('7',)

# (?:pattern)
# 非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。
print(re.match("win (?:7|vista)", "win 7").group()) # win 7
print(re.match("win (?:7|vista)", "win 7").groups()) # ()

# (?=pattern)
# 非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。
# exp1(?=exp2):查找 exp2 前面的 exp1。
print(re.match("win (?=7|vista)", "win 7").group()) # win
print(re.match("win (?=7|vista)", "win 7").groups()) # ()

# (?!pattern)
# 非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。
# exp1(?!exp2):查找后面不是 exp2 的 exp1。
print(re.match("win (?!7|vista)", "win 8").group()) # win
print(re.match("win (?!7|vista)", "win 8").groups()) # ()

# (?<=pattern)
# 非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。
# (?<=exp2)exp1:查找 exp2 后面的 exp1。
print(re.search("(?<=95|98)win", "98win").group()) # win
print(re.search("(?<=95|98)win", "98win").groups()) # ()

# (?<!pattern)
# 非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。
# (?<!exp2)exp1:查找前面不是 exp2 的 exp1。
print(re.search("(?<!95|98)win", "7win").group()) # win
print(re.search("(?<!95|98)win", "7win").groups()) # ()

  

posted @ 2021-04-16 15:32  LeoGIS  阅读(683)  评论(0编辑  收藏  举报