简体   繁体   English

正则表达式:奇数出现的奇数

[英]Regex: Odd number of occurrences of a char

Found nothing specific to my problem in searches: 在搜索中找不到我的问题:

I have an Alphabet {a,b,c}, where I need to produce a set of strings that have an odd number of a's. 我有一个字母{a,b,c},我需要生成一组具有奇数a的字符串。

Valid : ababaccccc baaaccccc cab caabaaac 有效期 :ababaccccc baaaccccc cab caabaaac

InValid : baac caacccb caabbbaac InValid :baac caacccb caabbbaac

Attempt: 尝试:

\\b[bc]*a{3}[bc]*\\b but this is very limited. \\b[bc]*a{3}[bc]*\\b但这是非常有限的。

以下正则表达式应该可行

\b[bc]*a(([bc]*a){2})*[bc]*\b

If you need solution without regex ie Java: 如果你需要没有正则表达式的解决方案,即Java:

String arr[] = {"ababaccccc",  "baaaccccc" , "caabaaac", "baac", "caacccb", "caabbbaac"};   

for (String string : arr) {
            int counter = 0;
            for (int i = 0; i < string.length(); i++) {
                if (string.charAt(i) == 'a') {
                    counter++;
                }
            }
            if ((counter & 1) == 0) {
                System.out.println(string + " is invalid");
            } else {
                System.out.println(string + " is valid");
            }
        }

Wouldn't it be easier to 会不会更容易

  1. split the input string on whitespace 将输入字符串拆分为空格
  2. count the 'a's in every element 计算每个元素中的'a'
  3. based on the outcome of count accept or reject ? 根据计数的结果接受还是拒绝?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM