import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<=\\W)\\$[a-zA-Z_\\\\\\{\\}= +']+\\$";
final String string = "We try to quantitatively capture these characteristics by defining a set of indexes, which can be computed using the mosaic image and the corresponding ground truth:\n"
+ "\\begin{itemize}\n"
+ " \\item $\\mu_{A_T}$ and $\\sigma_{A_T}$, the mean and standard deviation of the tiles area $A_T$, respectively;\n"
+ " \\item $\\rho_\\text{filler}$, the ratio between the filler area and the overall mosaic are, computed as $\\rho_\\text{filler}=\\frac{\\sum_{T \\in \\mathcal{T} A_T}}{A}$, being $A$ the area of the mosaic;\n"
+ " \\item \\todo{does it worth?};\n"
+ " \\item \\todo{does it worth?};\n"
+ " \\item $\\mu_{C_T}$, the mean of the tiles \\emph{color dispersion} $C_T$, being $C_T = \\sigma_R+\\sigma_G+\\sigma_B$, where $\\sigma_R$, $\\sigma_G$ and $\\sigma_B$ are the standard deviation of the red, green and blue channel values of the pixels within the tile $T$.\n"
+ "After applying a method to an image, we compare the segmented image (i.e., the result) against the ground truth and assess the performance according to the following three metrics:\n"
+ "\\begin{itemize}\n"
+ " \\item average tile precision $P$\n"
+ " \\item average tile recall $R$\n"
+ " \\item tile count error $C$\n"
+ "\\end{itemize}\n"
+ "Let $T$ be a tile on the ground truth $\\mathcal{T}$ with area $A_T$.\n"
+ "Let $T'$ be the tile in the segmented image which mostly overlaps $T$ and let $A_{T'}$ be the area of $T$; let $A_{T \\cap T'}$ be the overlapping area between $T$ and $T'$.\n"
+ "Let $n$ and $n'$ the number of tiles respectively in the ground truth and in the segmented image.\n"
+ "Metrics are defined as:\n"
+ "\\begin{align}\n"
+ " P &= \\frac{1}{n} \\sum_{T \\in \\mathcal{T}} \\frac{A_{T \\cap T'}}{A_{T'}} \\\\\n"
+ " R &= \\frac{1}{n} \\sum_{T \\in \\mathcal{T}} \\frac{A_{T \\cap T'}}{A_T} \\\\\n"
+ " C &= \\frac{|n-n'|}{n}\n"
+ "\\end{align}\n"
+ "We try to quantitatively capture these characteristics by defining a set of indexes, which can be computed using the mosaic image and the corresponding ground truth:\n"
+ "\\begin{itemize}\n"
+ " \\item $\\mu_{A_T}$ and $\\sigma_{A_T}$, the mean and standard deviation of the tiles area $A_T$, respectively;\n"
+ " \\item $\\rho_\\text{filler}$, the ratio between the filler area and the overall mosaic are, computed as $\\rho_\\text{filler}=\\frac{\\sum_{T \\in \\mathcal{T} A_T}}{A}$, being $A$ the area of the mosaic;\n"
+ " \\item \\todo{does it worth?};\n"
+ " \\item \\todo{does it worth?};\n"
+ " \\item $\\mu_{C_T}$, the mean of the tiles \\emph{color dispersion} $C_T$, being $C_T = \\sigma_R+\\sigma_G+\\sigma_B$, where $\\sigma_R$, $\\sigma_G$ and $\\sigma_B$ are the standard deviation of the red, green and blue channel values of the pixels within the tile $T$.\n"
+ "After applying a method to an image, we compare the segmented image (i.e., the result) against the ground truth and assess the performance according to the following three metrics:\n"
+ "\\begin{itemize}\n"
+ " \\item average tile precision $P$\n"
+ " \\item average tile recall $R$\n"
+ " \\item tile count error $C$\n"
+ "\\end{itemize}\n"
+ "Let $T$ be a tile on the ground truth $\\mathcal{T}$ with area $A_T$.\n"
+ "Let $T'$ be the tile in the segmented image which mostly overlaps $T$ and let $A_{T'}$ be the area of $T$; let $A_{T \\cap T'}$ be the overlapping area between $T$ and $T'$.\n"
+ "Let $n$ and $n'$ the number of tiles respectively in the ground truth and in the segmented image.\n"
+ "Metrics are defined as:\n"
+ "\\begin{align}\n"
+ " P &= \\frac{1}{n} \\sum_{T \\in \\mathcal{T}} \\frac{A_{T \\cap T'}}{A_{T'}} \\\\\n"
+ " R &= \\frac{1}{n} \\sum_{T \\in \\mathcal{T}} \\frac{A_{T \\cap T'}}{A_T} \\\\\n"
+ " C &= \\frac{|n-n'|}{n}\n"
+ "\\end{align}";
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