Grundsätzlich schreibe ich ein Programm in Java, wo ich eine Zeichenfolge in einem der drei Buckets kategorisieren muss.Java Reg Exp für Word nicht gefolgt von einem anderen Wort
- Kategorie 1 - String mit den beiden 'UND' und 'und nicht'
- Kategorie 2 - String mit 'und nicht'
- Kategorie 3 - String mit 'UND'
Ich brauche ein Regex, um die Zeichenfolge mit AND gefolgt von NOT wenn nicht zu überspringen.
A AND B AND NOT C - Fail
A AND B AND C - Fail
A AND NOT B AND NOT C - Pass
Unten finden Sie Beispielcode-Ausschnitt
public static void main(String[] args) {
String X = "A AND B AND C AND D AND NOT E";
String Y = "A AND NOT C ";
String Z = "A AND B AND D";
ArrayList<String> sampleString=new ArrayList<String>(Arrays.asList(X,Y,Z));
//Category 1 - String with both 'AND' and 'AND NOT'
//Category 2 - String with 'AND NOT' only
//Category 3 - String with 'AND' only
for(String s:sampleString){
if(s.contains("AND") && s.contains("NOT")){
System.out.println("Category 1 -"+s);
}
// This condition is invalid - I need some regex to match this condition. I need to consider only AND followed by NOT if not skip
if(s.contains("AND NOT") && !s.contains("AND")){
System.out.println("Category 2 - "+s);
}
if(s.contains("AND") && !s.contains("NOT")){
System.out.println("Category 3 - "+s);
}
}
OUTPUT -
Category 1 -A AND B AND C AND D AND NOT E
Category 1 -A AND NOT C
Category 3 - A AND B AND D
ich einige regex Fragen versucht, aber nicht meins nicht lösen. Ich versuchte mit unten
String regex="AND(?!\\s+NOT)";
public static void main(String args[]){
String x= "A AND B AND C AND NOT D";
String regex="AND(?!\\s+NOT)";
if(Pattern.compile(regex).matcher(x).find()){
System.out.println("X MATCHED");
}
}
//Returns - X MATCHED
Jede Hilfe würde sehr geschätzt werden!
Mit 'sonst if' helfen, die kollidierenden Bedingungen zu entfernen. – 4castle
Sie haben ein Programmierproblem. Sie entscheiden, es mit regulären Ausdrücken zu lösen. Jetzt haben Sie zwei Programmierprobleme. –
Oh ja. versuchen, eine Lösung für beide Probleme zu finden! – Cyborgz