import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?si)m_dwErrorCode\\s*=\\s*(?<code>\\dx\\d+);\\s*_stprintf\\(.*?\\(.*?\\((?<description>.*?)\\).*?;\\s*m_dwOutError\\s*=\\s*(?<error>[\\w_]+);\\s*m_OutSeverity\\s*=\\s*(?<severity>[\\w_]+)";
final String string = "m_dwErrorCode = 0; \n"
+ "m_dwOutError = HOP_OK; \n"
+ "m_OutSeverity = CCC_INFORMATION; \n"
+ "_stprintf(m_OutDevStr, _T(\"\"));\n"
+ "if (0x00000000 & value)\n"
+ "{\n"
+ " \n"
+ " m_dwErrorCode = 0x0;\n"
+ " /* Ready state. */\n"
+ " // m_StatusStr = \" Ready(eSTATUS_READY)\";\n"
+ "}\n"
+ "if (0x00000001 & value)\n"
+ "{\n"
+ " m_bProceeding = true;\n"
+ " /* proceed */\n"
+ " //m_StatusStr = \" Proceeding(eSTATUS)\";\n"
+ "}\n"
+ "if (0x00002000 & value)\n"
+ "{\n"
+ " m_bEmpty = true;\n"
+ " // We only want to check this error only at certain times.\n"
+ " if (m_bCheckEmpty)\n"
+ " {\n"
+ " if ((m_Attributes.dwMediaID == CUBE1) ||\n"
+ " (m_Attributes.dwMediaID == CUBE2) ||\n"
+ " /*(m_Attributes.dwMediaID == SCALLOPED) ||*/ // Added\n"
+ " (m_Attributes.dwMediaID == FOLDED))\n"
+ " {\n\n"
+ " m_dwErrorCode = 0x00002000;\n"
+ " _stprintf(m_OutDevStr, _T(\"0x1000 - %s(MP Tray Empty)\"), errorStr);\n"
+ " m_dwOutError = HOP_TRAY_EMPTY;\n"
+ " m_OutSeverity = CCC_INFORMATION;\n"
+ " }\n"
+ " }\n"
+ " //HOP_TRAY_EMPTY\n"
+ " ///* MSI empty. */\n"
+ " //m_bTrayEmpty = true;\n"
+ " //// m_StatusStr = \" MSI empty(eSTATUS_MSI_EMPTY)\";\n"
+ "}\n"
+ "if (0x00004000 & value)\n"
+ "{\n"
+ " /* empty. */\n"
+ " m_dwErrorCode = 0x4000;\n"
+ " _stprintf(m_OutDevStr, _T(\"0x4000 - %s(Tray 1 empty)\"), errorStr);\n"
+ " m_dwOutError = HOP_TRAY_01_EMPTY;\n"
+ " m_OutSeverity = CCC_INFORMATION;\n"
+ "}\n"
+ "if (0x00008000 & value)\n"
+ "{\n"
+ " /* Tray 2 empty. */\n"
+ " m_dwErrorCode = 0x8000;\n"
+ " _stprintf(m_OutDevStr, _T(\"0x8000 - %s(Tray 2 empty)\"), errorStr);\n"
+ " m_dwOutError = HOP_TRAY_02_EMPTY;\n"
+ " m_OutSeverity = CCC_INFORMATION;\n"
+ "}\n"
+ "if (0x00010000 & value)\n"
+ "{\n"
+ " /* Tray 3 empty. */\n"
+ " m_dwErrorCode = 0x10000;\n"
+ " _stprintf(m_OutDevStr, _T(\"0x10000 - %s(Tray 3 empty)\"), errorStr);\n"
+ " m_dwOutError = HOP_TRAY_03_EMPTY;\n"
+ " m_OutSeverity = CCC_INFORMATION;\n"
+ "}";
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