用于搜索以逗号为边框的字符串中的字母的Regexp

用于搜索以逗号为边框的字符串中的字母的Regexp,regex,Regex,我在db中有字符串: 第1行:A、AA、ACX、AAA、AAC、ACA、ACC、CCA 第2行:A、AAX、ACC 第3行:ACA、ACCA、CCCAA、XAACC 我需要正则表达式来搜索以逗号为边框的字母数(与字母顺序无关) 例如,我需要:2个A字母和1个C字母,所以第1行和第3行是令人满意的。 或者是第1行和第2行的字母 我有这个:但它只对字母A有效。正则表达式肯定不是更有效的工具,下面的正则表达式正好匹配两个A和一个C的单词: (?<=^|[,\s])(?=[AC]{3}(?:[,\

我在db中有字符串:

第1行:A、AA、ACX、AAA、AAC、ACA、ACC、CCA

第2行:A、AAX、ACC

第3行:ACA、ACCA、CCCAA、XAACC

我需要正则表达式来搜索以逗号为边框的字母数(与字母顺序无关)

例如,我需要:2个A字母和1个C字母,所以第1行和第3行是令人满意的。 或者是第1行和第2行的字母


我有这个:但它只对字母A有效。

正则表达式肯定不是更有效的工具,下面的正则表达式正好匹配两个A和一个C的单词:

(?<=^|[,\s])(?=[AC]{3}(?:[,\s]|$))(?=(?:[^A,\s]*A){2}[^A,\s]*(?:[,\s]|$))(?=(?:[^C,\s]*C){1}[^C,\s]*(?:[,\s]|$))[^,\s]*

(?我认为纯正则表达式在这里可能不是合适的工具。在Java中,我可能会用逗号分割字符串,然后可能使用一个正则表达式来进行一些计数。正则表达式不能很好地计数。当然,您可以请求一系列77 a,但不能请求一个总共包含77 a的字符串。在一些简单的情况下,需要一个完整的模式列表。)这是可行的,但一般情况下会有很多
(?<=^|[,\s])(?=[AC]{3}(?:[,\s]|$))(?=(?:[^A,\s]*A){2})(?=(?:[^C,\s]*C){1})[^,\s]*