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

时间:2018-01-24 11:14:08

标签: regex

我在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.

1 个答案:

答案 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]*