字符串处理神器——python regular expression

╮ 潜心 ╰ edited 7 年,2 月前

正则表达式是一个特殊的字符序列,它可以帮助方便地检查字符串是否与某种模式匹配。

匹配的信息包括匹配的子串、分组、以及在文本中的索引。

放一些最近接触到的能用re处理的例题 (后续遇到了再更新啦)

EOJ 2897 英文缩写词

除了 预处理+字符串流 的C++标准做法以外 re自带的split有奇效

import re
del_word = ["THE", "AN", "A", "OF", "FOR", "AND"]
while True:
    try:
        for word in re.split(r"[ -]", input().upper()):
            if not (word in del_word):
                print(word[0], end = '')
        print('')  
    except:
        break

EOJ 3124 单词表

大致思路是filter过滤后 利用set去重 最后存入list中 排序好后join输出

import re
cas = int(input())
for t in range(cas):
    s = input()
    print("case #%d:" %t)
    lis = list(set(filter(lambda x: x, re.split(r'[,.!? ]+', s))))
    lis.sort()
    print(' '.join(lis))

EOJ 3143 纯虚数的幂

思路:提取 ‘aj b’中的a和b 幂运算后判断正负号和结尾j的情况

    from re import split
    cas = int(input())
    for t in range(cas):
            a, b = map(int, split(r"[j ]+", input()))
            s = str(a ** b)
            dic = {0: s, 1:s+'j', 2:'-'+s, 3:'-'+s+'j'}
            print("case #%d:\n%s" %(t, dic[b%4]))

Comments