Java 如何使这个正则表达式为负数?

Java 如何使这个正则表达式为负数?,java,regex,Java,Regex,我想得到这个图案的负片 Pattern pt=Pattern.compile(“FOR,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE)”,“+”(*?”+“FOR”); 我试过了,但没用 Pattern pt=Pattern.compile([^FOR,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE),“+”(.*?“+”FOR,]); 我的错误是: 线程“main”java.util.regex.PatternSyntaxExc

我想得到这个图案的负片

Pattern pt=Pattern.compile(“FOR,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE)”,“+”(*?”+“FOR”);
我试过了,但没用

Pattern pt=Pattern.compile([^FOR,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE),“+”(.*?“+”FOR,]);
我的错误是:

线程“main”java.util.regex.PatternSyntaxException中的异常: 索引10附近的非法字符范围 [^对于,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE),(.*)对于,] ^位于java.util.regex.Pattern.error(未知源代码)的java.util.regex.Pattern.range(未知源代码)的 java.util.regex.Pattern.clazz(未知源代码)位于 位于的java.util.regex.Pattern.sequence(未知源) java.util.regex.Pattern.expr(未知源代码)位于 java.util.regex.Pattern.compile(未知源代码)位于 Pattern.(未知源代码)位于 java.util.regex.Pattern.compile(未知源代码)


我猜您可能希望设计一个表达式来排除列出的字符串,可能是一个类似于:

^(?!.*(FOR,FGS-(AX|AX2|AXMM|EMP|LV1|MLE))).*$
如果您希望探索/简化/修改该表达式,将在的右上面板中对其进行解释。在中,如果您愿意,可以查看它与一些示例输入的匹配情况

试验
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
最终字符串regex=“^(?)*(对于,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE)).$”;
final String=“FGS-AX之前的任何内容,FGS-AX之后的其他内容,以及您希望的任何内容\n”
+FGS-AX2之前的任何内容,FGS-AX2之后的其他内容,以及您希望的任何内容\n
+“之前的任何内容,例如,FGS-EMP,其他一些内容,之后的任何内容\n”
+FGS-AX2之前的任何内容,FGS-AX2之后的其他内容,以及您希望的任何内容\n
+FGS-AX2之前的任何内容,FGS-AX2之后的其他内容,以及您希望的任何内容\n
+在FGS-AXMM之前的任何内容,在FGS-AXMM之后的其他内容,以及您希望在FGS-AXMM之后的任何内容\n
+“之前的任何事情,例如,FGS-NOTAXMM,其他一些事情,任何你希望之后的事情”;
最终模式=Pattern.compile(regex,Pattern.MULTILINE);
final Matcher Matcher=pattern.Matcher(字符串);
while(matcher.find()){
System.out.println(“完全匹配:+matcher.group(0));

对于(int i=1;i我猜您可能希望设计一个表达式来排除列出的字符串,可能是一个类似于:

^(?!.*(FOR,FGS-(AX|AX2|AXMM|EMP|LV1|MLE))).*$
如果您希望探索/简化/修改该表达式,将在的右上面板中对其进行解释。在中,如果您愿意,可以查看它与一些示例输入的匹配情况

试验
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
最终字符串regex=“^(?)*(对于,FGS-(AX | AX2 | AXMM | EMP | LV1 | MLE)).$”;
final String=“FGS-AX之前的任何内容,FGS-AX之后的其他内容,以及您希望的任何内容\n”
+FGS-AX2之前的任何内容,FGS-AX2之后的其他内容,以及您希望的任何内容\n
+“之前的任何内容,例如,FGS-EMP,其他一些内容,之后的任何内容\n”
+FGS-AX2之前的任何内容,FGS-AX2之后的其他内容,以及您希望的任何内容\n
+FGS-AX2之前的任何内容,FGS-AX2之后的其他内容,以及您希望的任何内容\n
+在FGS-AXMM之前的任何内容,在FGS-AXMM之后的其他内容,以及您希望在FGS-AXMM之后的任何内容\n
+“之前的任何事情,例如,FGS-NOTAXMM,其他一些事情,任何你希望之后的事情”;
最终模式=Pattern.compile(regex,Pattern.MULTILINE);
final Matcher Matcher=pattern.Matcher(字符串);
while(matcher.find()){
System.out.println(“完全匹配:+matcher.group(0));

对于(int i=1;i)我认为smybol只适用于对字符集求反,而不是对任意表达式求反。在正则表达式中没有简单的方法对表达式求反。您做过任何研究吗?有很多重复的方法可以解决这个问题。对于您的问题本身,您应该添加您想要匹配的内容和不想要匹配的内容的示例输入这很难理解。非常感谢您的回答,我只想排除一组字符。请解决所有提到的问题,谢谢。我需要获取不以“for,FGS”开头的字符串-“后跟AX、AX2、AXMM、EMP、LV1或MLE,字符串的结尾必须是因为我希望现在能弄清楚,感谢smybol只适用于对字符集求反,而不是对任意表达式求反。在正则表达式中没有简单的方法来对表达式求反。你做过任何研究吗?有很多重复的方法处理这个问题。请回答你的问题。”就其本身而言,您应该添加您想要匹配的内容和您不想要匹配的内容的示例输入,否则很难理解。非常感谢您的回答,我只想排除一组字符。请解决所有提到的问题,谢谢。我需要获取不以“for,FGS”开头的字符串-“后面跟着AX或AX2或AXMM或EMP或LV1或MLE,字符串的结尾必须是因为我希望现在清楚了。非常感谢您的帮助,非常感谢。对不起,我的英语太差了:),这是一个例子,我试图设计一个表达式来排除列出的字符串的问题,我在这个例子中所做的是包含但不是正确的。非常感谢您的帮助,非常感谢。对不起,我的英语太差了:),这是一个例子,我试图设计一个表达式来排除列出的字符串的问题,我在这个例子中所做的是include,但这并不正确