import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\{([^\\{\\}]|(?R))*\\}";
final String string = "Wind energy is the kinetic energy of air in motion, also called wind. Total wind energy flowing through an imaginary surface with area A during the time t is:\n"
+ "{\\displaystyle E={\\frac {1}{2}}mv^{2}={\\frac {1}{2}}(Avt\\rho )v^{2}={\\frac {1}{2}}At\\rho v^{3},} E={\\frac {1}{2}}mv^{2}={\\frac {1}{2}}(Avt\\rho )v^{2}={\\frac {1}{2}}At\\rho v^{3},[248]\n"
+ "where ρ is the density of air; v is the wind speed; Avt is the volume of air passing through A (which is considered perpendicular to the direction of the wind); Avtρ is therefore the mass m passing through \"A\". Note that ½ ρv2 is the kinetic energy of the moving air per unit volume.\n"
+ "Power is energy per unit time, so the wind power incident on A (e.g. equal to the rotor area of a wind turbine) is:\n"
+ "{\\displaystyle P={\\frac {E}{t}}={\\frac {1}{2}}A\\rho v^{3}.} P={\\frac {E}{t}}={\\frac {1}{2}}A\\rho v^{3}.[248]\n"
+ "Wind power in an open air stream is thus proportional to the third power of the wind speed; the available power increases eightfold when the wind speed doubles. Wind turbines for grid electric power therefore need to be especially efficient at greater wind speeds.";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html