Java 正则表达式按顺序包含三个字符,在字符串中不重复

Java 正则表达式按顺序包含三个字符,在字符串中不重复,java,regex,regex-negation,Java,Regex,Regex Negation,我尝试使用正则表达式解决以下问题,但未能(最终使用其他方法): 给定一个字符串,必须检查是否按此顺序包含字符C、a和T,并且每个字符只出现一次。可以是这些字符之间的其他字符。 例: 因此,它将是: public String getAnswer(String S) { if(S.matches("pattern???")) return "Possible"; return "Impossible"; } 有人知道要使用的模式并且可以共享吗?您可以使用这样的模式: ^[^CAT]

我尝试使用正则表达式解决以下问题,但未能(最终使用其他方法):

给定一个字符串,必须检查是否按此顺序包含字符
C
a
T
,并且每个字符只出现一次。可以是这些字符之间的其他字符。 例:

因此,它将是:

public String getAnswer(String S) {
   if(S.matches("pattern???")) return "Possible";
   return "Impossible";
}

有人知道要使用的模式并且可以共享吗?

您可以使用这样的模式:

^[^CAT]*C[^CAT]*A[^CAT]*T[^CAT]*$

此正则表达式适用于您:

"(?m)^[^CAT]*C[^CAT]*A[^CAT]*T[^CAT]*$"

非常感谢。只是等待超过时间限制,所以我可以检查你的答案是否正确。谢谢。它也起作用。阿尔坎扎尔的回答快了一点。这就是为什么我检查他的答案是否正确。是的,检查他的答案是公平的。我开始创建完全工作的演示,花了更多的时间来写我的答案,并最终在17秒后发布了我的答案:)+1表示完全工作的演示和正确的正则表达式。一口井花了17秒!
"(?m)^[^CAT]*C[^CAT]*A[^CAT]*T[^CAT]*$"