Ich habe eine Zeichenfolge:Java String.split() Regex
String str = "a + b - c * d/e <f> g >= h <= i == j";
Ich möchte die Zeichenfolge auf alle Operatoren spalten, sondern umfassen die Operatoren in der Anordnung, so dass die resultierende Anordnung wie folgt aussieht:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >=, h , <=, i , ==, j]
ich habe dies zur Zeit bekam:
public static void main(String[] args) {
String str = "a + b - c * d/e <f> g >= h <= i == j";
String reg = "((?<=[<=|>=|==|\\+|\\*|\\-|<|>|/|=])|(?=[<=|>=|==|\\+|\\*|\\-|<|>|/|=]))";
String[] res = str.split(reg);
System.out.println(Arrays.toString(res));
}
Dieses ziemlich nahe ist, gibt es:
Gibt es etwas, was ich tun kann, um die Mehrfachzeichenoperatoren im Array erscheinen zu lassen, wie ich sie will?
Und als eine sekundäre Frage, die nicht annähernd so wichtig ist, gibt es einen Weg in der Regex, um die Leerzeichen aus der Nähe der Buchstaben zu trimmen?
Sie könnten einfach durch Leerzeichen in Ihrem Beispielausdruck aufteilen, um das Ergebnis zu erhalten wollen. – Jeffrey
für Ihre sekundäre Frage: String hat eine Trim-Funktion: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() –
@ Jeffrey: Die Räume nicht unbedingt da sein. Ich habe die Räume für eine bessere Lesbarkeit, aber es könnte eine beliebige Kombination von Leerzeichen oder keine sein. Danke für die Idee! – user677786