import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?ms)^\\d+\\.\\s*(.*?)(?=^\\d+\\.|\\Z)";
final String string = "5. What ultrasound finding in a breast lesion is typically associated with malignancy?\n"
+ "A. Increased through transmission\n"
+ "B. Height greater than width\n"
+ "C. Hyperechogenicity\n"
+ "D. Surrounding hyperechoic halo\n"
+ "Key: B Rationale: A. Incorrect. Increased through transmission is typically associated with benign simple cysts. B. Correct. Height greater than width is a sonographic feature that is typically associated with malignancy. C. Incorrect. Hyperechogenicity typically is seen with benign fat containing lesions and is not a typical feature of malignancy. D. Incorrect. A surrounding hyperechoic (echogenic) halo is typically associated with benign post traumatic findings.\n"
+ "References: Stavros AT. Breast Ultrasound. Lippincott Williams and Wilkins, 2004. P. 472.\n\n"
+ "6. For which ONE of the following would a BIRADS 6 classification be MOST appropriate?\n"
+ "A. Post procedure mammogram for marker placement\n"
+ "B. Prior treated breast cancer\n"
+ "C. Recent biopsy proven breast cancer\n"
+ "D. Suspicious abnormality; needs biopsy\n"
+ "Key: C\n"
+ "Rationale: A. Incorrect. A Birads category is not given on the post procedure mammogram for marker placement. B. Incorrect. Patients with a history of breast cancer are not assigned a Birads Category 6, which is reserved for patients with known (untreated as yet) malignancy. C. Correct. Birads Category 6 is assigned to patients with a diagnosis of cancer who have not yet been definitively treated. D. Incorrect. Patients with suspicious abnormalities; need biopsy should be coded Birads Category 4. Birads 6 is reserved for patients with a known biopsy proven diagnosis of breast cancer.\n"
+ "References: ACR BIRADS Atlas, 5th Edition, 2013. P. 149-159.";
final Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS | 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