编程介的小学生 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 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误