如何测试字符串是否是正则表达式的任何实例的子字符串?

时间:2012-07-07 07:02:56

标签: regex substring instance

在任何编程语言和库中,

如何测试字符串是否是正则表达式的任何实例的子字符串?

例如,正则表达式的所有实例

RA = /^a{1,2}c{1,2}$/

'ac', 'acc', 'aac', 'aacc'.

字符串'cc'不是正则表达式的实例,而是正则表达式的两个实例的子字符串。你如何测试'c'是否具有这样的属性?

等效地,你怎么能得到(一般)一个正则表达式,其实例都是另一个正则表达式的任何实例的子串。

对于上面的示例,正​​则表达式

RB = /^a{0,2}c{0,2}$/

有实例

'', 'c', 'cc', 'a', 'ac', 'acc', 'aa', 'aac', 'aacc'

这是RA实例的所有子串。

对于任何正则表达式RA,如何从RA计算这样的RB?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果你的意思是计算机科学正则表达式,你可以通过形成标记的所有子序列的交替来实现这一点:

/^a{1,2}c{1,2}$/ -> /^(a{1,2}|a{1,2}c{1,2}|c{1,2}|)$/

请注意,长度会增加为O(n 2 ),其中n是原始表达式中的数字标记。