HURRICANE 小组最近接到了一个搜索文本的任务,即从一个由数字构成的长文本中,匹配满足指定条件的子串。搜索的条件采用形如 这样的正则表达式来描述。其中正则表达式的归纳定义如下:
是正则表达式;
如果 和 是正则表达式,则 都是正则表达式;
只有按以上方法构造出来的表达式才是正则表达式。
其中, 表示「或者」关系, 表示「连接」关系, 表示 的内容「重复」零次或者多次。
比如正则表达式 ,就可以匹配以 之一开头,之后接零 个或任意多个 的字符串(例如字符串 )。正则表达式 可以匹配所有由 和 构成的字符串,或者是空串。如果一个正则表达式不能匹配空串,则称它是非空的。本题考虑的都是非空正则表达式。
如果在给定文本的某一个位置,存在一个以该位置结束的子串,能够被给定的非空正则表达式匹配,则称该位置是可匹配的。现在HURRICANE 小组接到的任务就是找出所有可匹配的位置。你能帮助他们完成这个任务么?