编程介的小学生 2017-09-07 03:08 采纳率: 20.5%
浏览 794
已采纳

Advanced Regular Expression

Given a paragraph and several regular expressions, your task is to find the first match of each regular expression. If multiple matches exist, you must output the longest one.
The regular expression can contain some meta-characters described below:

  • Matches the preceding character/meta-character zero or more times.
  • Matches the preceding character/meta-character one or more times. ? Matches the preceding character/meta-character zero or one time. . Matches any single character. [xyz] A character set. Matches any characters within the brackets. [^xyz] A negative character set. Matches any characters NOT within brackets. \d Matches a digit character. \D Matches a non-digit character. \a Matches a alpha character. \A Matches a non-alpha character. \n Matches a new-line character. (ASCII 10) \s Matches any white-space character including space, tab and new-line. \S Matches any non-white-space character. \t Matches a tab character. (ASCII 9) \w Matches an alphanumeric character (including "_") \W Matches a non-alphanumeric character. * Matches "*". + Matches "+". \? Matches "?". . Matches ".". [ Matches "[". ] Matches "]". \ Matches "\".

Note:
1. [ ] always appear in pairs and will not be nested.
2. The character set within [ ] will not be empty.
3. Meta-characters can not be used within [ ].

Input

The first line of input contains an integer n, the number of test cases. Each test case begins with an integer L, and the following L lines give the paragraph. The next line contains an integer m, with the following m lines containing a regular expression each.

You can assume that each paragraph contains no more than 100,000 characters and each regular expression has no more than 100 characters.

Output

For each test case, first print the case number on a single line, then print the match for each regular expression. If no match is found, print "No match is found". Print a blank line after each test case.

Always print a '\n' after each match unless the match ends with a '\n' itself. Print a line with 44 dashes after each match.

Empty match is NOT valid.

Some Examples:
m.n matches "man", "men", "min" but not "moon".
Te+st matches "test", "teest", "teeeest" etc. BUT NOT "tst".
Te*st matches "test", "teest", "teeeest" etc. AND "tst".
[aeiou] matches every lowercase vowel.
[,.?] matches a literal ",", "." or "?".
[^^] matches any character except "^".

Sample Input

2
1
Hello world!
2
He.*d!
He*d!
1
Sunny Cup
1
Sunny Cup

Sample Output

Case #1:

Hello world!

No match is found

Case #2:

Sunny Cup

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-09-22 00:34
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料