import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(\\.?\\w+)(?: (\\w+))(( \\S+)*)";
final String string = "# Circuit generated by QLib\n"
+ "# Cuccaro's Adder\n"
+ "# arXiv:quant-ph/0410184v1 \n"
+ "# 15 bit quantum adder\n\n"
+ ".qubit 32\n\n"
+ "qubit c0\n"
+ "qubit a0\n"
+ "qubit b0\n"
+ "qubit a1\n"
+ "qubit b1\n"
+ "qubit a2\n"
+ "qubit b2\n"
+ "qubit a3\n"
+ "qubit b3\n"
+ "qubit a4\n"
+ "qubit b4\n"
+ "qubit a5\n"
+ "qubit b5\n"
+ "qubit a6\n"
+ "qubit b6\n"
+ "qubit a7\n"
+ "qubit b7\n"
+ "qubit a8\n"
+ "qubit b8\n"
+ "qubit a9\n"
+ "qubit b9\n"
+ "qubit a10\n"
+ "qubit b10\n"
+ "qubit a11\n"
+ "qubit b11\n"
+ "qubit a12\n"
+ "qubit b12\n"
+ "qubit a13\n"
+ "qubit b13\n"
+ "qubit a14\n"
+ "qubit b14\n"
+ "qubit z\n\n"
+ ".begin\n"
+ "CNOT a0 b0\n"
+ "CNOT a0 c0\n"
+ "Toffoli c0 b0 a0\n"
+ "CNOT a1 b1\n"
+ "CNOT a1 a0\n"
+ "Toffoli a0 b1 a1\n"
+ "CNOT a2 b2\n"
+ "CNOT a2 a1\n"
+ "Toffoli a1 b2 a2\n"
+ "CNOT a3 b3\n"
+ "CNOT a3 a2\n"
+ "Toffoli a2 b3 a3\n"
+ "CNOT a4 b4\n"
+ "CNOT a4 a3\n"
+ "Toffoli a3 b4 a4\n"
+ "CNOT a5 b5\n"
+ "CNOT a5 a4\n"
+ "Toffoli a4 b5 a5\n"
+ "CNOT a6 b6\n"
+ "CNOT a6 a5\n"
+ "Toffoli a5 b6 a6\n"
+ "CNOT a7 b7\n"
+ "CNOT a7 a6\n"
+ "Toffoli a6 b7 a7\n"
+ "CNOT a8 b8\n"
+ "CNOT a8 a7\n"
+ "Toffoli a7 b8 a8\n"
+ "CNOT a9 b9\n"
+ "CNOT a9 a8\n"
+ "Toffoli a8 b9 a9\n"
+ "CNOT a10 b10\n"
+ "CNOT a10 a9\n"
+ "Toffoli a9 b10 a10\n"
+ "CNOT a11 b11\n"
+ "CNOT a11 a10\n"
+ "Toffoli a10 b11 a11\n"
+ "CNOT a12 b12\n"
+ "CNOT a12 a11\n"
+ "Toffoli a11 b12 a12\n"
+ "CNOT a13 b13\n"
+ "CNOT a13 a12\n"
+ "Toffoli a12 b13 a13\n"
+ "CNOT a14 b14\n"
+ "CNOT a14 a13\n"
+ "Toffoli a13 b14 a14\n"
+ "CNOT a14 z\n"
+ "Toffoli a13 b14 a14\n"
+ "CNOT a14 a13\n"
+ "CNOT a13 b14\n"
+ "Toffoli a12 b13 a13\n"
+ "CNOT a13 a12\n"
+ "CNOT a12 b13\n"
+ "Toffoli a11 b12 a12\n"
+ "CNOT a12 a11\n"
+ "CNOT a11 b12\n"
+ "Toffoli a10 b11 a11\n"
+ "CNOT a11 a10\n"
+ "CNOT a10 b11\n"
+ "Toffoli a9 b10 a10\n"
+ "CNOT a10 a9\n"
+ "CNOT a9 b10\n"
+ "Toffoli a8 b9 a9\n"
+ "CNOT a9 a8\n"
+ "CNOT a8 b9\n"
+ "Toffoli a7 b8 a8\n"
+ "CNOT a8 a7\n"
+ "CNOT a7 b8\n"
+ "Toffoli a6 b7 a7\n"
+ "CNOT a7 a6\n"
+ "CNOT a6 b7\n"
+ "Toffoli a5 b6 a6\n"
+ "CNOT a6 a5\n"
+ "CNOT a5 b6\n"
+ "Toffoli a4 b5 a5\n"
+ "CNOT a5 a4\n"
+ "CNOT a4 b5\n"
+ "Toffoli a3 b4 a4\n"
+ "CNOT a4 a3\n"
+ "CNOT a3 b4\n"
+ "Toffoli a2 b3 a3\n"
+ "CNOT a3 a2\n"
+ "CNOT a2 b3\n"
+ "Toffoli a1 b2 a2\n"
+ "CNOT a2 a1\n"
+ "CNOT a1 b2\n"
+ "Toffoli a0 b1 a1\n"
+ "CNOT a1 a0\n"
+ "CNOT a0 b1\n"
+ "Toffoli c0 b0 a0\n"
+ "CNOT a0 c0\n"
+ "CNOT c0 b0\n"
+ ".end\n\n"
+ "# Circuit generated by QLib\n"
+ "# Bernstein-Vazirani search\n"
+ "# Secret= 1\n"
+ ".qubit 11\n"
+ "qubit x0 \n"
+ "qubit x1 \n"
+ "qubit x2 \n"
+ "qubit x3 \n"
+ "qubit x4 \n"
+ "qubit x5 \n"
+ "qubit x6 \n"
+ "qubit x7 \n"
+ "qubit x8 \n"
+ "qubit x9 \n"
+ "qubit y\n"
+ "Prep0 y\n"
+ ".begin\n"
+ "X y\n"
+ "H x0\n"
+ "H x1\n"
+ "H x2\n"
+ "H x3\n"
+ "H x4\n"
+ "H x5\n"
+ "H x6\n"
+ "H x7\n"
+ "H x8\n"
+ "H x9\n"
+ "H y\n"
+ "CNOT x0 y\n"
+ "H x0\n"
+ "H x1\n"
+ "H x2\n"
+ "H x3\n"
+ "H x4\n"
+ "H x5\n"
+ "H x6\n"
+ "H x7\n"
+ "H x8\n"
+ "H x9\n"
+ "H y\n"
+ ".end\n\n"
+ "# Circuit generated by QLib\n"
+ "# QFT for 15 qubits\n"
+ ".qubit 15\n\n"
+ "qubit q0\n"
+ "qubit q1\n"
+ "qubit q2\n"
+ "qubit q3\n"
+ "qubit q4\n"
+ "qubit q5\n"
+ "qubit q6\n"
+ "qubit q7\n"
+ "qubit q8\n"
+ "qubit q9\n"
+ "qubit q10\n"
+ "qubit q11\n"
+ "qubit q12\n"
+ "qubit q13\n"
+ "qubit q14\n\n"
+ ".begin\n"
+ "H q0\n"
+ "CP q1 q0 2\n"
+ "CP q2 q0 1\n"
+ "CP q3 q0 0.5\n"
+ "CP q4 q0 0.25\n"
+ "CP q5 q0 0.125\n"
+ "CP q6 q0 0.0625\n"
+ "CP q7 q0 0.03125\n"
+ "CP q8 q0 0.015625\n"
+ "CP q9 q0 0.0078125\n"
+ "CP q10 q0 0.00390625\n"
+ "CP q11 q0 0.00195312\n"
+ "CP q12 q0 0.000976562\n"
+ "CP q13 q0 0.000488281\n"
+ "CP q14 q0 0.000244141\n"
+ "H q1\n"
+ "CP q2 q1\n"
+ "CP q3 q1 1\n"
+ "CP q4 q1 0.5\n"
+ "CP q5 q1 0.25\n"
+ "CP q6 q1 0.125\n"
+ "CP q7 q1 0.0625\n"
+ "CP q8 q1 0.03125\n"
+ "CP q9 q1 0.015625\n"
+ "CP q10 q1 0.0078125\n"
+ "CP q11 q1 0.00390625\n"
+ "CP q12 q1 0.00195312\n"
+ "CP q13 q1 0.000976562\n"
+ "CP q14 q1 0.000488281\n"
+ "H q2\n"
+ "CP q3 q2 2\n"
+ "CP q4 q2 1\n"
+ "CP q5 q2 0.5\n"
+ "CP q6 q2 0.25\n"
+ "CP q7 q2 0.125\n"
+ "CP q8 q2 0.0625\n"
+ "CP q9 q2 0.03125\n"
+ "CP q10 q2 0.015625\n"
+ "CP q11 q2 0.0078125\n"
+ "CP q12 q2 0.00390625\n"
+ "CP q13 q2 0.00195312\n"
+ "CP q14 q2 0.000976562\n"
+ "H q3\n"
+ "CP q4 q3 2\n"
+ "CP q5 q3 1\n"
+ "CP q6 q3 0.5\n"
+ "CP q7 q3 0.25\n"
+ "CP q8 q3 0.125\n"
+ "CP q9 q3 0.0625\n"
+ "CP q10 q3 0.03125\n"
+ "CP q11 q3 0.015625\n"
+ "CP q12 q3 0.0078125\n"
+ "CP q13 q3 0.00390625\n"
+ "CP q14 q3 0.00195312\n"
+ "H q4\n"
+ "CP q5 q4 2\n"
+ "CP q6 q4 1\n"
+ "CP q7 q4 0.5\n"
+ "CP q8 q4 0.25\n"
+ "CP q9 q4 0.125\n"
+ "CP q10 q4 0.0625\n"
+ "CP q11 q4 0.03125\n"
+ "CP q12 q4 0.015625\n"
+ "CP q13 q4 0.0078125\n"
+ "CP q14 q4 0.00390625\n"
+ "H q5\n"
+ "CP q6 q5 2\n"
+ "CP q7 q5 1\n"
+ "CP q8 q5 0.5\n"
+ "CP q9 q5 0.25\n"
+ "CP q10 q5 0.125\n"
+ "CP q11 q5 0.0625\n"
+ "CP q12 q5 0.03125\n"
+ "CP q13 q5 0.015625\n"
+ "CP q14 q5 0.0078125\n"
+ "H q6\n"
+ "CP q7 q6 2\n"
+ "CP q8 q6 1\n"
+ "CP q9 q6 0.5\n"
+ "CP q10 q6 0.25\n"
+ "CP q11 q6 0.125\n"
+ "CP q12 q6 0.0625\n"
+ "CP q13 q6 0.03125\n"
+ "CP q14 q6 0.015625\n"
+ "H q7\n"
+ "CP q8 q7 2\n"
+ "CP q9 q7 1\n"
+ "CP q10 q7 0.5\n"
+ "CP q11 q7 0.25\n"
+ "CP q12 q7 0.125\n"
+ "CP q13 q7 0.0625\n"
+ "CP q14 q7 0.03125\n"
+ "H q8\n"
+ "CP q9 q8 2\n"
+ "CP q10 q8 1\n"
+ "CP q11 q8 0.5\n"
+ "CP q12 q8 0.25\n"
+ "CP q13 q8 0.125\n"
+ "CP q14 q8 0.0625\n"
+ "H q9\n"
+ "CP q10 q9 2\n"
+ "CP q11 q9 1\n"
+ "CP q12 q9 0.5\n"
+ "CP q13 q9 0.25\n"
+ "CP q14 q9 0.125\n"
+ "H q10\n"
+ "CP q11 q10 2\n"
+ "CP q12 q10 1\n"
+ "CP q13 q10 0.5\n"
+ "CP q14 q10 0.25\n"
+ "H q11\n"
+ "CP q12 q11 2\n"
+ "CP q13 q11 1\n"
+ "CP q14 q11 0.5\n"
+ "H q12\n"
+ "CP q13 q12 2\n"
+ "CP q14 q12 1\n"
+ "H q13\n"
+ "CP q14 q13 2\n"
+ "H q14\n"
+ ".end\n\n\n";
final String subst = "";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
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