平衡弦正则表达式

inn*_*hil 3 java regex string expression balance

所以问题来了:
一个字符串只由 a、b、c、d 组成。

如果满足以下条件,则称该字符串是平衡的:

  1. a 和 c 出现的总和是偶数
  2. b 和 d 出现的总和是偶数

我必须编写一个正则表达式来检查字符串是否是java中的平衡字符串。
请帮帮我。

zhh*_*zhh 6

对于第一个条件。的总和ac是偶数,这意味着你可以匹配对acaacacc

使用正则表达式,它被写为

([ac]{2})*
Run Code Online (Sandbox Code Playgroud)

由于那些aand 中有其他字符c,所以它变成

(([^ac]*[ac]){2})*[^ac]*
Run Code Online (Sandbox Code Playgroud)

和第二个条件一样

(([^bd]*[ac]){2})*[^bd]*
Run Code Online (Sandbox Code Playgroud)

因为输入字符串应该只包含a,b,c,d,所以[^ac]应该是[bd][^bd]应该是[ac]

String cond1 = "(([bd]*[ac]){2})*[bd]*";
String cond2 = "(([ac]*[bd]){2})*[ac]*";
String input = "abcdabcd";
boolean matches = Pattern.matches(cond1, input) && Pattern.matches(cond2, input);
Run Code Online (Sandbox Code Playgroud)

这个问题向我们展示了如何使用前瞻将这两个条件组合成一个正则表达式:

String regex = "(?=^(([ac]*[bd]){2})*[ac]*$)(([bd]*[ac]){2})*[bd]*";
Run Code Online (Sandbox Code Playgroud)