ho una stringa:Java String.split() Regex
String str = "a + b - c * d/e <f> g >= h <= i == j";
voglio dividere la stringa su tutti gli operatori, ma includono gli operatori nella matrice, quindi l'array risultante assomiglia:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >=, h , <=, i , ==, j]
ho questo momento:
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));
}
questo è abbastanza vicino, dà:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >, =, h , <, =, i , =, =, j]
C'è qualcosa che posso fare per far apparire gli operatori di caratteri multipli nell'array come li voglio?
E come una domanda secondaria che non è altrettanto importante, c'è un modo nella regex di tagliare lo spazio bianco fuori dalle lettere?
Si può semplicemente dividere per spazi nell'espressione di esempio per ottenere il risultato desiderato volere. – Jeffrey
per la domanda secondaria: La stringa ha una funzione di ritaglio: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() –
@Jeffrey: gli spazi non necessariamente essere lì Ho gli spazi in là per facilità di leggibilità, ma potrebbe essere una qualsiasi combinazione di spazi o nessuno. Grazie comunque per l'idea! – user677786