对于第一个条件。的总和a和c是偶数,这意味着你可以匹配对ac,aa,ca和cc。
使用正则表达式,它被写为
([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)
| 归档时间: |
|
| 查看次数: |
6925 次 |
| 最近记录: |