在任何编程语言和库中,
如何测试字符串是否是正则表达式的任何实例的子字符串?
例如,正则表达式的所有实例
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?
提前致谢!
答案 0 :(得分:1)
如果你的意思是计算机科学正则表达式,你可以通过形成标记的所有子序列的交替来实现这一点:
/^a{1,2}c{1,2}$/ -> /^(a{1,2}|a{1,2}c{1,2}|c{1,2}|)$/
请注意,长度会增加为O(n 2 ),其中n是原始表达式中的数字标记。