(?<name>exp) 匹配 exp,并捕获文本到名称为 name 的组里,也可以写成 (?'name'exp)。
但是在Python中,为 (?P<name>exp)。 简单例子:
import re pattern = re.compile(r'(?P<here>[a-z]+) ([a-z]+)', re.I) m = pattern.match('Hello World word helo') print (m.group('here'))
输出结果为:
Hello
命名组是便于使用的,可以替代需要记住组的数字,可以进行扩展使用。
关于正则表达式 \b 模式,还有一点需要说明,\b 是指匹配一个单词边界,也就是指单词和空格间的位置。但事实上,\b 可以匹配的边界包括单词和特殊字符边界,比如 $,#… 等。
例如:
import re ret = re.findall(r'o\b','hello nano$') print(ret) #结果为['o', 'o']
re.sub 使用实例:改变日期的格式,如中国格式 2017-11-27 改为美国格式 11/27/2017:
>>> s = '2017-11-27' >>> import re >>> print(re.sub('(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1', s)) 11/27/2017 >>>
用 () 来划定原字符串的组,{} 中表示数字的个数,r 即后面的字符串为原始字符串,防止计算机将 \ 理解为转义字符,2,3,1 为输入的字符串三段的序号。
正则表达式符号使用小总结:
1、[ ]:方括号。匹配需要的字符集合,如[1-3]或[123]都是匹配1、2或者3。
2、^:脱字符号。方括号中加入脱字符号,就是匹配未列出的所有其他字符,如[^a]匹配除a以外的所有其他字符。
3、\:反斜杠。和python字符串使用规则一样,可以匹配特殊字符本身,如\d表示匹配0到9的任意一个数字字符,而\\d则表示匹配\d本身。
4、*:星号。匹配前一个字符0到n次,如pytho*n可以匹配pythn、pytoon、pythooooon等。还有其它匹配重复字符的如?、+或{m,n},其中{n,m}可以灵活使用,它表示匹配n次到m次。
Python 计算笛卡尔积
计算多个集合的笛卡尔积,有规律可循,算法和代码也不难,但是很多语言都没有提供直接计算笛卡尔积的方法,需要自己写大段大段的代码计算笛卡尔积,python 提供了一种最简单的计算笛卡称积的方法(只需要一行代码),详见下面的代码:
#!/usr/bin/python3 # -*- coding: utf-8 -*- # @file : Cartesian.py # @author : shlian # @date : 2018/5/29 # @version: 1.0 # @desc : 用python实现求笛卡尔积 import itertools class cartesian(object): def __init__(self): self._data_list=[] def add_data(self,data=[]): #添加生成笛卡尔积的数据列表 self._data_list.append(data) def build(self): #计算笛卡尔积 for item in itertools.product(*self._data_list): print(item) if __name__=="__main__": car=cartesian() car.add_data([1,2,3,4]) car.add_data([5,6,7,8]) car.add_data([9,10,11,12]) car.build()
计算的结果如下:
(1, 5, 9) (1, 5, 10) (1, 5, 11) (1, 5, 12) (1, 6, 9) (1, 6, 10) (1, 6, 11) (1, 6, 12) (1, 7, 9) (1, 7, 10) (1, 7, 11) (1, 7, 12) (1, 8, 9) (1, 8, 10) (1, 8, 11) (1, 8, 12) (2, 5, 9) (2, 5, 10) (2, 5, 11) (2, 5, 12) (2, 6, 9) (2, 6, 10) (2, 6, 11) (2, 6, 12) (2, 7, 9) (2, 7, 10) (2, 7, 11) (2, 7, 12) (2, 8, 9) (2, 8, 10) (2, 8, 11) (2, 8, 12) (3, 5, 9) (3, 5, 10) (3, 5, 11) (3, 5, 12) (3, 6, 9) (3, 6, 10) (3, 6, 11) (3, 6, 12) (3, 7, 9) (3, 7, 10) (3, 7, 11) (3, 7, 12) (3, 8, 9) (3, 8, 10) (3, 8, 11) (3, 8, 12) (4, 5, 9) (4, 5, 10) (4, 5, 11) (4, 5, 12) (4, 6, 9) (4, 6, 10) (4, 6, 11) (4, 6, 12) (4, 7, 9) (4, 7, 10) (4, 7, 11) (4, 7, 12) (4, 8, 9) (4, 8, 10) (4, 8, 11) (4, 8, 12)
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1173Python3 高级教程 Python3 正则表达式
(?<name>exp) 匹配 exp,并捕获文本到名称为 name 的组里,也可以写成 (?'name'exp)。
但是在Python中,为 (?P<name>exp)。 简单例子:
输出结果为:
命名组是便于使用的,可以替代需要记住组的数字,可以进行扩展使用。
1172Python3 高级教程 Python3 正则表达式
关于正则表达式 \b 模式,还有一点需要说明,\b 是指匹配一个单词边界,也就是指单词和空格间的位置。但事实上,\b 可以匹配的边界包括单词和特殊字符边界,比如 $,#… 等。
例如:
1171Python3 高级教程 Python3 正则表达式
re.sub 使用实例:改变日期的格式,如中国格式 2017-11-27 改为美国格式 11/27/2017:
用 () 来划定原字符串的组,{} 中表示数字的个数,r 即后面的字符串为原始字符串,防止计算机将 \ 理解为转义字符,2,3,1 为输入的字符串三段的序号。
1170Python3 高级教程 Python3 正则表达式
正则表达式符号使用小总结:
1、[ ]:方括号。匹配需要的字符集合,如[1-3]或[123]都是匹配1、2或者3。
2、^:脱字符号。方括号中加入脱字符号,就是匹配未列出的所有其他字符,如[^a]匹配除a以外的所有其他字符。
3、\:反斜杠。和python字符串使用规则一样,可以匹配特殊字符本身,如\d表示匹配0到9的任意一个数字字符,而\\d则表示匹配\d本身。
4、*:星号。匹配前一个字符0到n次,如pytho*n可以匹配pythn、pytoon、pythooooon等。还有其它匹配重复字符的如?、+或{m,n},其中{n,m}可以灵活使用,它表示匹配n次到m次。
1169Python3 实例
Python 计算笛卡尔积
计算多个集合的笛卡尔积,有规律可循,算法和代码也不难,但是很多语言都没有提供直接计算笛卡尔积的方法,需要自己写大段大段的代码计算笛卡尔积,python 提供了一种最简单的计算笛卡称积的方法(只需要一行代码),详见下面的代码:
计算的结果如下: