ich Anforderung habe eine Zeichenfolge auf einer Aufteilung auf Schlüsselwörter wie AND,OR,NOT,&,|,!,(,).
Regex zu vermeiden Aufspaltung auf Sonderzeichen
Es gibt spezielle Zustand, wo ich will nicht zur Trennung von Worten, wenn ein paraenthesis '(' or ')'
in der Mitte des Wortes kommt oder Klammern mit Sonderzeichen kommen in der Mitte des Wortes.Weder möchte ich auf Sonderzeichen aufteilen. Auch möchte ich nicht auf Leerzeichen aufteilen.
Wenn Klammer am Anfang des Wortes oder am Ende des Wortes kommt, dann muss ich nur teilen.
Zum Beispiel:
Meine Logik ist wie folgt.
String str = "(((Tom AND Jerray) AND Mic(#*ey and miney)) ";
str = str.replaceAll("\\s*\\(\\s*", "(");
str = str.replaceAll("\\s*\\)\\s*", ")");
str = str.replaceAll("and\\(", " and (");
str = str.replaceAll("\\)and", ") and ");
String[] splitArray= str.toUpperCase().split(("((?<=\\bOR\\b|\\bAND\\b|\\bNOT\\b)|(?=\\bOR\\b|\\bAND\\b|\\bNOT\\b))|((?<=(^|)\\(+)+\\b+)|(\\b(?=\\)($|)))"));
Splitted Ausgang, was ich von splitArray bin immer ist:
(((
TOM
AND
JERRAY)
AND
MIC(#*EY
AND,
MINEY))
Aber ich möchte die Ausgabe als:
(((
TOM
AND
JERRAY
**)**
AND
MIC(#*EY
AND,
MINEY
**))**
-Code ich geschrieben hatte, nicht Spaltung geschlossen ist Klammern. Ich möchte das auch teilen. Kann mir jemand dabei helfen?
Aber dieser Regex Halte nicht Splittern. Gibt es eine Möglichkeit, das zu behalten? – Sameer