╮ 潜心 ╰ 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]))