我在db中有字符串:
第1行:A,AA,ACX,AAA,AAC,ACA,ACC,CCA
第2行:A,AAX,ACC
第3行:ACA,ACCA,CCCAA,XAACC
我需要正则表达式来搜索以逗号为边界的字母数量(在字母顺序上无关紧要)
所以对于前。我需要:2x A字母和1x C字母,因此第1行和第3行令人满意。 或者1x一个字母,所以第1行和第2行。
我有这个:https://regex101.com/r/1Uinu0/1/但它仅适用于字母A.
答案 0 :(得分:1)
正则表达式肯定不是更有效的工具,在正则表达式匹配正好两个A和一个C的单词之后:
(?<=^|[,\s])(?=[AC]{3}(?:[,\s]|$))(?=(?:[^A,\s]*A){2}[^A,\s]*(?:[,\s]|$))(?=(?:[^C,\s]*C){1}[^C,\s]*(?:[,\s]|$))[^,\s]*
可能会缩短
(?<=^|[,\s])(?=[AC]{3}(?:[,\s]|$))(?=(?:[^A,\s]*A){2})(?=(?:[^C,\s]*C){1})[^,\s]*