Esegui solo la regex di Java

Come faccio a dire la seguente espressione regolare per trovare solo la prima partita? Il seguente codice continua a trovare tutte le regex possibili all’interno della stringa.

cioè sto cercando solo gli indici della sottostringa (200-800;50]

 public static void main(String[] args) { String regex = "(\\[|\\().+(\\]|\\))"; String testName= "DCGRD_(200-800;50]MHZ_(PRE|PST)_(TESTMODE|REG_3FD)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(testName); boolean found = false; while (matcher.find()) { System.out.format("I found the text" + " \"%s\" starting at " + "index %d and ending at index %d.%n", matcher.group(), matcher.start(), matcher.end()); found = true; } if (!found){ System.out.println("Sorry, no match!"); } } 

matcher.group(1) restituirà la prima corrispondenza.

Se intendi abbinamenti pigri invece di abbinamenti desiderati, prova ad aggiungere un? dopo il + nell’espressione regolare.

In alternativa, puoi considerare di usare qualcosa di più specifico di .+ Per abbinare il contenuto tra parentesi. Se ti stai aspettando solo lettere, numeri e pochi caratteri allora forse qualcosa come [-A-Z0-9;_.]+ meglio?