【发布时间】:2014-12-13 10:53:44
【问题描述】:
我正在尝试解决以下问题。
给定一个字符串和一个正则表达式模式,给出该模式在字符串中出现的次数。正则表达式符号含义如下:
. - 2 occurrences of the previous character,
+ - 4 occurrences of previous character,
* – more than 5 occurrences of the previous character
给出的示例输入:
aaaaaannndnnnnnnfffhfhhgjjjwkkkllclc
a.
n+
a*
an.
a.d.
给出的示例输出:
5
3
1
1
0
我的方法是将所有正则表达式转换为正常模式。即,对于上面的示例,我的 RegEx 将是:
aa
nnnn
aaaaaa
ann
aadd
然后计算出现次数。但如果输入 RegEx 是,我不知道该怎么办:
a*d.
请注意,我不能使用任何内置函数,例如 Pattern.Matches。有什么建议吗?
谢谢。
【问题讨论】:
-
*是未绑定的(任何大于 5 的数字),因此您实际上无法明确表示模式,因为a*是一个 infinite 有限字符串集.另外,随便重新定义+和*的人应该知道,她很可能会引起很多混乱。 -
您是否要创建新规则?
-
如果您不能使用内置函数,那么将模式转换为“真正的”正则表达式模式有什么好处?你能不能用正则表达式来完成这个任务?
-
如果给出这个规则,你将如何实现你的正则表达式匹配是问题? @Rawing 这是一个面试问题。你可以在这里查看。 geeksforgeeks.org/browserstack-written-test-3 我试图通过扩展正则表达式来解决这个问题。只是一种方法。