标签:pre 字母 rbo 等价 find mat 开始 代码行数 大括号
()小括号 -- 分组
[]中括号 -- 字符类,匹配所包含的任一字符 #注:字符集合把【】里面的内容当作普通字符!(-\^除外)
{}大括号 -- 限定匹配次数
| 或 r‘AC|D‘ -> AC或AD
. 匹配任一字符(\ 除外)
\. 匹配字符.
^ 脱字符 匹配输入字符串的开始位置 # r‘^AC‘
$ 匹配字符串末尾 # r‘AC$‘
\b 匹配一个单词的边界 (单词定义为字母,数字,下划线) ;\B 与 \b相反 匹配非单词边界
\d 匹配任一数字[0-9] ; \D 与 \d相反,[^0-9]
\s 匹配空白字符【\t \n \r \f \v】;\S与\s相反
\w 匹配字母 数字 下划线(中文也可以) 【a-z A-Z 0-9 _】; \W与\w相反
* 匹配子表达式0次或多次,等价于 {0,}
+ 匹配子表达式1次或多次,等价于 {1, }
? 匹配子表达是0次或1次,等价于{0,1}
贪婪模式(python正则表达式中默认使用),尽可能多的去匹配
s = ‘<html><title>ssss<\html><\title>‘
re.search(r‘<.+>‘,s)
#输出: ‘<html><title>ssss<\html><\title>‘
启用非贪婪模式
re.search(r‘<.+?>‘, s)
# 输出: <html>
1. re.search()
s = ‘Bo ke yuan‘
result = re.search(r‘(\w+) (\w+)‘, s)
result.group() # ‘Bo ke‘
result.group(1) # ‘Bo‘; result.group(2) # ‘ke‘
result.start() #0 (匹配起始位置)
result.end() #5 (匹配结束位置)
result.span() #(0, 5) (匹配范围)
2. re.findall()
如果给出的正则表达式包含子组,就会把子组的内容单独返回回来。
若包含多个子组,将匹配的内容组合成元组返回
如何让子组不捕获内容?
非捕获组(?:) 把所有出现子组的地方都加 ?:
3. re.compile() 编译正则表达式
如果你需要重复的使用某个正则表达式,那么你可以先将正则表达式编译成模式对象。
p = re.compile(r‘[A-Z]‘)
p.search(‘Bo Ke Yuan‘) # [‘B‘]
p.findall(‘Bo Ke Yuan‘) # [‘B‘, ‘K‘, ‘Y‘]
基本用法:
import argparse # step1. 导入模块 parser = argparse.ArgumentParser() # step2. 创建参数解析对象 parser.add_argument() # step3. 添加参数 """位置参数:parser.add_argument("echo", help="参数描述") 必选 可选参数: parser.add_argument("--verbosity", help="参数描述") 可选 """ args = parser.parse_args() # step4. 解析参数 """位置参数访问:args.echo 可选参数访问:args.verbosity """
c = collections.Counter(参数) #参数可以是list、str、tuple、None等等 #作用:统计参数每个元素出现的次数 #返回:一个字典(元素作为key存储,元素出现次数作为value存储) #####例子: c = Counter(‘gallahad‘) # 输出: Counter({‘a‘: 3, ‘d‘: 1, ‘g‘: 1, ‘h‘: 1, ‘l‘: 2}) c.update(‘adc‘) # 在原来基础上更新计数(直接修改c) # 输出: Counter({‘a‘: 4, ‘c‘: 1, ‘d‘: 2, ‘g‘: 1, ‘h‘: 1, ‘l‘: 2}) c.most_common() # 输出:[(‘a‘, 4), (‘l‘, 2), (‘d‘, 1), (‘g‘, 1), (‘b‘, 1), (‘c‘, 1), (‘h‘, 1)] # 相当于字典排序:sorted(c.items(), key=lambda asd:asd[1], reverse=True)
# 格式 itertools.chain(*iterables) #作用:将多个可迭代的对象转换成一条链 a = [[1, 2, 3], [‘a‘, ‘b‘, ‘c‘]] itertools.chain(a) # 结果: 1, 2, 3, ‘a‘, ‘b‘, ‘c‘
import jieba words = jieba.cut(字符串, cut_all=True) # 全模式分词 (信息检索中常用) words = jieba.cut(字符串, cut_all=False) # 精确模式分词(默认) #支持并行分词 jieba.enable_paralle(4) #支持自定义词典 filename = ‘词典路径‘ jieba.load_userdict(filename)
import jieba.posseg as pseg word = pseg.cut(‘ 我来到北京清华大学‘) for word, flag in words: print("%s %s"%(word, flag))
标签:pre 字母 rbo 等价 find mat 开始 代码行数 大括号
原文地址:http://www.cnblogs.com/lianyingteng/p/7727598.html