专栏文章

题解:AT_ijpc_ijpc 国際情報オリンピック日本代表プログラミングコンテスト (Welcome to IJPC)

AT_ijpc_ijpc题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqm698l
此快照首次捕获于
2025/12/04 07:04
3 个月前
此快照最后确认于
2025/12/04 07:04
3 个月前
查看原文

前言

正则表达式,是一种由许多标记来表示一个字符串的表达式。
例如:[A-Za-z0-9_] 就是来匹配所有大小写字母+数字+下划线的一个表达式。

标记 []

这个标记是用来将一些连续的字串/单独的符号来包括在其中。
例如:[A-Z] 是指匹配所有的大写字母

标记 ()

将标记合成一个

标记 |

这个符号是用来标记两个元素的关系,相当于
那么,以下正则表达式:
CPP
(A|B|C)aa
将会匹配:Aaa / Baa / Caa

标记-

表示连续的字串。例如:[A-Z]
注意到升序原则1

思路

首先,匹配 [IJPC]0{0} 步,因为不需要替换任何字母)
然后匹配 (I[A-Z]PC) 等等(1{1} 步,只有一个字母需要替换)
同理,匹配需要替换 2,3,4{2,3,4} 个字母的表达式。
大概的表达式应该是:
CPP
//0
IJPC
//1
[A-Z]JPC
I[A-Z]PC
IJ[A-Z]C
IJP[A-Z]
//2
[A-Z][A-Z]PC
[A-Z]J[A-Z]C
[A-Z]JP[A-Z]
I[A-Z][A-Z]C
I[A-Z]P[A-Z]
IJ[A-Z][A-Z]
[A-Z][A-Z][A-Z]C
[A-Z]...
这个需要在 C++17 中使用2

后言

关于正则表达式的语法远远不止这些,加油 OIer!

Footnotes

  1. - 左右两边的元素应当保证左小右大。
  2. C++17 中,需要使用 <regex> 头文件,用来启用正则表达式,这个头文件提供了查找匹配等函数。

评论

0 条评论,欢迎与作者交流。

正在加载评论...