防滥用过滤器用的正则表达式

题目描述

某网站的防滥用过滤器用正则表达式来检测并匹配某字体以后可能需要制作的字符:

1
2
3
(action == "edit")
&
(added_lines rlike "[龦-鿼䶶-䶿𠀀-𱍊]")

如上过滤器匹配了加入CJK统一表意文字中基本区补充(早期部分)、扩展A区补充及扩展B到G区的全部文字(当然,也包含了空码位和兼容补充)的编辑。对于高频字,即便在字体中已经包括,仍然会在编辑时触发过滤器,不便于制作字体时作为参考。现要对该正则表达式进行修改,即匹配Unicode新版汉字但去掉已经制作完成的部分,避免重复触发。每次字体更新后,该过滤器的正则表达式也需要相应更新,从需要匹配的文字中减去本次更新中已经制作好的部分。

输入格式

一行,包含两个字符串,即可以匹配单字的正则表达式$a, b$,它们能匹配到的文字集合分别为$A,B$。

输出格式

输出一个字符串,为最短的可以匹配$A-B$的正则表达式,且其中出现的-[]以外的字符按Unicode码位从小到大排列。

输入输出样例

输入 #1

1
[𰀀-𱍊] [𰻞]

输出 #1

1
[𰀀-𰻝𰻟-𱍊]

输入 #2

1
[龦-鿿] [龲龵鿏鿔鿭鿬鿫]

输出 #2

1
[龦-龱龳龴龶-鿎鿐-鿓鿕-鿪鿮-鿿]

说明/提示

  1. $a,b$均以[开头,以]结尾,其余字符只含CJK统一表意文字与-
  2. $B \subseteq A$,且$\mathrm{card}(A) < 3 \times 10^5$。
  3. 若要匹配三个码位连续的字符,如abc,使用[a-c]而不是[abc]