计算字符串中的字符匹配数(仅限Regex)?

时间:2016-05-25 21:53:56

标签: java regex

所以我最近有一个面试问题,要求我确定字符串是否平衡。在这两个条件下,字符串是平衡的:

  1. ' a'出现的总和和' c'是偶数。
  2. ' b'出现的总和并且' d'是偶数。
  3. 所以给出了例子" cccddbba"这些条件适用。 c (3) + a (1)次出现even (1+3=4)的出现次数为d (2)b (2)even (2+2=4)次出现的次数为^([ac])*?[db]*?([ac])*?$。字符串只能包含字符' a'' b'' c'和' d'正则表达式应该适用于任何字符串,而不仅仅是这个例子。

    我的任务只是为此编写正则表达式。我假设他们在后台计算了' a'的匹配数量。和' c'发现使用我的正则表达式并总结。同样适用于' b'和' d'。

    我暂时没有触及正则表达式,所以我做得很糟糕,只有SELECT RecID, Name , CASE WHEN LEFT(Name, 1) Like '[A-C]' THEN 'Cat1' WHEN LEFT(Name, 1) Like '[D-E]' THEN 'Cat2' WHEN LEFT(Name, 1) Like '[F-G]' THEN 'Cat3' ELSE 'Cat999' END AS Category ,这显然是不正确的。

2 个答案:

答案 0 :(得分:2)

为每个断言使用单独的预测:

with tf.Graph().as_default():
    # Define G and V the same way. No initialization or run here.
    saver.restore(sess, '/B/somefolder/somefile')

请参阅live demo

这主要是因为^(?=(([^ac]*[ac]){2})*[^ac]*$)(?=(([^bd]*[bd]){2})*[^bd]*$).*$ 匹配([^ac]*[ac]){2})对。其余的相对简单。

答案 1 :(得分:0)

使用正向前瞻,您可以检查a和c是否出现偶数次,并且同样适用于b和d:

^(?=[^ac]*([ac][^ac]*[ac][^ac]*)*$)(?=[^bd]*([bd][^bd]*[bd][^bd]*)*$).*$

两个前瞻组中的每一个都检查整个字符串是否包含偶数个字符。请注意,每个前瞻都锚定在末尾($),以强制它扫描直到字符串的结尾。

相关问题