Regex 使用正则表达式筛选字符串

Regex 使用正则表达式筛选字符串,regex,regex-negation,Regex,Regex Negation,我想使用正则表达式在文本文件中查找满足以下所有要求的字符串 长度为3 都是由大写字母组成的 第一个字符不是“A” 第二个字符不是“J” 第三个字符不是“K” 我从以下内容开始:/[A-Z]{3}/但出于某种原因,它也匹配小写的3个字母字符串 这可能吗?欢迎提供任何指导。您需要锚定regexp,使其与整行匹配。否则,它将匹配一个长度超过3的字符串,但其中的任何位置都包含3个大写字母 可以为每个字符使用字符集 /^[B-Z][A-IK-Z][A-JL-Z]$/ ^匹配行的开头。[B-Z]匹配非A的

我想使用正则表达式在文本文件中查找满足以下所有要求的字符串

长度为3 都是由大写字母组成的 第一个字符不是“A” 第二个字符不是“J” 第三个字符不是“K” 我从以下内容开始:/[A-Z]{3}/但出于某种原因,它也匹配小写的3个字母字符串


这可能吗?欢迎提供任何指导。

您需要锚定regexp,使其与整行匹配。否则,它将匹配一个长度超过3的字符串,但其中的任何位置都包含3个大写字母

可以为每个字符使用字符集

/^[B-Z][A-IK-Z][A-JL-Z]$/

^匹配行的开头。[B-Z]匹配非A的任何大写字母,[A-IK-Z]匹配除J之外的任何字母,[A-JL-Z]匹配除M之外的任何字母。$匹配行的结尾。

请尝试以下操作返回所有匹配项:/\B?=[A-Z][^A]?=[A-Z][^J]=[A-Z][^K]\b/g

它使用look aheads,只返回3个字母匹配,并且对于任何其他变体A、J、K都可以相对容易地重复


演示:

另一个使用前瞻的解决方案:

^(?=[A-Z]{3}$)[^A][^J][^K]$

如果启用不区分大小写的匹配,[A-Z]只能匹配小写字母。您需要锚定regexp,否则它将匹配行中的任何位置。所以它应该是/^[A-Z]{3}$/您可以使用:/[B-Z][A-IK-Z][A-JL-Z]/此外,您需要匹配所有Unicode字母还是仅匹配ASCII字母?