import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?P<queryValue>[0-9,./]+) ?(?P<sourceUnit>[a-zA-Z/\\\"'^0-9\\p{Sc}]+)(?:(?: in | to | as | ?> ?)(?P<targetUnit>[a-zA-Z/\\\"'^0-9\\p{Sc}]+))?$";
final String string = "4/5\"\n"
+ "4 m/s\n"
+ "4/3m/s\n"
+ "4/3\" in ms\n"
+ "4/3km/h\n"
+ "4/3km/h in mph\n"
+ "4m in cm\n"
+ "9.0m in cm\n"
+ "9,0m in cm\n"
+ "9,0m>cm\n"
+ "9,0m>cm\n"
+ "9,0 m>cm\n"
+ "9,0 m > cm\n"
+ "9 meters as centimeters\n"
+ "1 m^3\n"
+ "4$>€\n"
+ "4€\n"
+ "4$>¥\n\n"
+ "# Test queries from https://phabricator.kde.org/D22869\n"
+ "3/8\"\n"
+ "3/8 in\n"
+ "3/8\" in cm\n"
+ "3/0\"\n"
+ "3\"\n"
+ "3€>₱\n\n"
+ "# Should not match\n"
+ "4 in m/s\n"
+ "4in m/s\n"
+ "4\">";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
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