一文看懂正则表达式?:和?=的区别

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import re

phone = "1233-hfdh"

# 匹配的是123
# ?:后面匹配消耗字符,也就是说在一个匹配发生后,后面的匹配是?:匹配到的23后面开始继续匹配
print(re.search('1(?:23)', phone))
print(re.search('1(?:23)23', phone))

# 匹配的是1
# ?=后面匹配不消耗字符,也就是说在一个匹配发生后,后面的匹配是从前面的1后面开始而不是从?=匹配到的23后面开始继续匹配
print(re.search('1(?=23)', phone))
print(re.search('1(?=23)23', phone))

你可能感兴趣的:(python,正则表达式,python)